JAVAjava上的lang.NullPointerException。网URI$解析器。作语法分析
我想连接到Heroku数据库,并尝试复制其教程中的模型: https://devcenter.heroku.com/articles/connecting-to-relational-databases-on-heroku-with-java#using-the-jdbc_database_url
当执行以下行时
URI dbUri = new URI(System.getenv("postgresql://osnvehqhufnxzr:TS3Qt37c_HHbGRNKw3yk7g88fp@ec2-54-225-93-34.compute-1.amazonaws.com:5432/d39mfq0odt56bv?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory"));
我发现了错误
java.lang.NullPointerException
at java.net.URI$Parser.parse(Unknown Source)
at java.net.URI.<init>(Unknown Source)
这是如何造成的,我如何解决
# 1 楼答案
创建URI对象时,使用的是
System.getenv()
,它试图获取名为“p”的系统环境变量的值ostgresql://osnvehq...,这肯定不存在,也不是您的意图。请删除System.getenv()并仅使用url字符串建议:在连接返回之前,您可能会在一些系统中添加一些。出来println()语句,并检查控制台输出,以确保URL、用户名和密码从URI中正确提取
另外,请说这些不是你数据库的真实用户和密码,它们现在暴露在全世界。。。如果这些都是真实的,你需要立即更改它们-不是在这里,因此,这只猫已经出局了,在你的实际数据库中更改它
编辑: 好的,我刚刚查看了heroku链接,该教程告诉您的是使用
new URI(System.getenv("DATABASE_URL"))
并保持数据库的URL部分不变。这是一个包含实际连接信息的环境变量