java.net.URI $ Parser.parse中的java.lang.NullPointerException

时间:2016-08-17 01:04:08

标签: java nullpointerexception

我想连接到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 个答案:

答案 0 :(得分:2)

当您创建URI对象时,您正在使用System.getenv(),它试图获取名为&#34; postgresql://osnvehq ...。&#34;的系统环境变量的值。 ,这当然不存在,不是你的意图。删除System.getenv()并使用url字符串。

建议:在使用连接返回之前,您可以在变量中添加一些System.out.println()语句并检查控制台输出以确保正确地从中提取URL,用户名和密码。 URI。

另外,请说那些不是你的数据库的真实用户和密码现在暴露给整个世界...如果这些是真的,你需要立即更改它们 - 不是在这里,不是cat已经不在了,在实际数据库中将其更改

修改 好的,我只是看了一下heroku链接,那个教程告诉你的是使用new URI(System.getenv("DATABASE_URL"))并按原样保留DATABASE_URL部分。这是一个包含实际连接信息的环境变量。