Java Heroku找不到Postgres JDBC驱动程序
使用Maven为Heroku编写纯Java服务器应用程序。 连接到Heroku的Postgres数据库。Java Heroku找不到Postgres JDBC驱动程序,java,postgresql,maven,heroku,jdbc,Java,Postgresql,Maven,Heroku,Jdbc,使用Maven为Heroku编写纯Java服务器应用程序。 连接到Heroku的Postgres数据库。 当在本地运行时,一切都正常运行,使用IntelliJ的配置运行Java应用程序,并将Heroku的DB URL指定为环境变量。应用程序正常工作,我可以连接到数据库。 注意:我发现IntelliJ以某种方式自动使用自己的Postgres驱动程序,我在pom.xml中指定的驱动程序被忽略,显然 但是,当我部署应用程序时,一旦连接到数据库,我的Heroku日志中就会出现以下错误: java.lan
当在本地运行时,一切都正常运行,使用IntelliJ的配置运行Java应用程序,并将Heroku的DB URL指定为环境变量。应用程序正常工作,我可以连接到数据库。
注意:我发现IntelliJ以某种方式自动使用自己的Postgres驱动程序,我在pom.xml中指定的驱动程序被忽略,显然
但是,当我部署应用程序时,一旦连接到数据库,我的Heroku日志中就会出现以下错误:
java.lang.ClassNotFoundException:org.postgresql.Driver
我遵循了Heroku教程,但当我看到没有连接时,我把
Class.forName("org.postgresql.Driver");
以前
String dbUrl = System.getenv("JDBC_DATABASE_URL");
return DriverManager.getConnection(dbUrl);
只是为了确保找到司机。如果我删除Class.forName()…
检查,我会得到找不到适用于[my db url]错误的驱动程序。
关于最后一个错误,我尝试了JDBC\u-DATABASE\u-URL和DATABASE\u-URLenv-vars,甚至用sslmode=require
等“手工”构建数据库URL,但仍然没有成功。
My pom.xml已指定modelVersion、groupId、artifactId、version和name,以及:
<dependencies>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.4.1208</version>
</dependency>
</dependencies>
当我部署应用程序时,我没有收到任何错误,构建成功
驾驶员未装载的原因是什么?我是否忘记了pom.xml、Procfile或其他内容?有时候,方便性(比如像我一样使用IntelliJ的git集成推送到Heroku)会导致不必要的问题
我用git push更新了我在Heroku上的应用程序。一切都很好,只是所需的库没有到位。
已尝试mvn heroku:deploy
,已测试,一切正常!谢谢你的建议
如果有人问,下面是你以前从未做过的事情:
1) 将添加到您的pom.xml
:
<build>
<plugins>
<plugin>
<groupId>com.heroku.sdk</groupId>
<artifactId>heroku-maven-plugin</artifactId>
<version>2.0.6</version>
</plugin>
</plugins>
</build>
com.heroku.sdk
heroku maven插件
2.0.6
2) 执行maven goalheroku:deploy
就是这样我在从本地系统进行连接时遇到了同样的问题,但在部署时没有。同样的问题是,没有可访问的依赖项,但是对于使用JAR的构建,我只需要确保我使用了一个包含所有依赖项的JAR。为了澄清,当您添加类.forName
调用时,DB连接工作吗?在本地,forName()
捕获IntelliJ的jdbc驱动程序,连接正常。在Heroku上,forName()
触发ClassNotFoundException
您可以通过运行Heroku run ls target/dependency/
来检查您的Heroku slug中是否有postgres jar文件吗?我得到ls:cannotaccess target/dependency/:没有这样的文件或目录
,表明您的jar文件没有被出售(即,在构建期间复制到目标目录中)。您是使用git push
还是mvn heroku:deploy
进行部署?
<build>
<plugins>
<plugin>
<groupId>com.heroku.sdk</groupId>
<artifactId>heroku-maven-plugin</artifactId>
<version>2.0.6</version>
</plugin>
</plugins>
</build>