2016-08-17 122 views
-1

我想连接到Heroku的数据库和我试图复制模型像他们的教程: https://devcenter.heroku.com/articles/connecting-to-relational-databases-on-heroku-with-java#using-the-jdbc_database_url显示java.lang.NullPointerException

低于线当执行

URI dbUri = new URI(System.getenv("postgresql://osnvehqhufnxzr:[email protected]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) 

这是怎么造成的,我该如何解决呢?

+0

的可能的复制[什么是空指针异常,怎么解决呢?(http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix -it) –

+0

@Jonathon Reinhart Aff。 – JamesB

+1

你为什么使用'System.getenv'?这似乎是一个正常的字符串 –

回答

2

当您创建URI对象时,您使用的是System.getenv(),它试图获取名为“postgresql:// osnvehq ...”的系统环境变量的值,该变量绝对不存在,并且不是您的意向。删除System.getenv()并只使用url字符串。

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

另外,请说这些都不是你的数据库,现在暴露在整个世界的真正的用户名和密码......如果这些是真实的,你需要立即改变他们 - 这里不是这样,那猫是在袋子外面已经在您的实际的数据库更改

编辑: 好吧,我只是看着Heroku的链接,什么该教程告诉你是用new URI(System.getenv("DATABASE_URL"))和离开DATABASE_URL部分原样。这是一个包含实际连接信息的环境变量。

+0

我可以删除它这个DB是用于测试目的,它是空的。 – JamesB

+0

我在第一部分中了解什么,我不知道什么是System.getenv(),我已经tryed回报的DriverManager.getConnection(URL,用户通过),但我不知道的Heroku通过仪表板中的URL一切是URL的Postgres:// osnvehqhufnxzr:[email protected]com:5432/d39mfq0odt56bv说的不见过这样的URL。 – JamesB

+0

如何获取此特定URL以获取连接方法?谢谢。 – JamesB

相关问题