有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    创建URI对象时,使用的是System.getenv(),它试图获取名为“p”的系统环境变量的值ostgresql://osnvehq...,这肯定不存在,也不是您的意图。请删除System.getenv()并仅使用url字符串

    建议:在连接返回之前,您可能会在一些系统中添加一些。出来println()语句,并检查控制台输出,以确保URL、用户名和密码从URI中正确提取

    另外,请说这些不是你数据库的真实用户和密码,它们现在暴露在全世界。。。如果这些都是真实的,你需要立即更改它们-不是在这里,因此,这只猫已经出局了,在你的实际数据库中更改它

    编辑: 好的,我刚刚查看了heroku链接,该教程告诉您的是使用new URI(System.getenv("DATABASE_URL"))并保持数据库的URL部分不变。这是一个包含实际连接信息的环境变量