gpt4 book ai didi

java - Heroku 找不到 Postgres JDBC 驱动程序

转载 作者:行者123 更新时间:2023-11-29 12:19:05 25 4
gpt4 key购买 nike

使用 Maven 为 Heroku 编写纯 Java 服务器应用程序。连接到 Heroku 的 Postgres 数据库。
本地运行时一切正常,使用 IntelliJ 的配置运行 Java 应用程序,将 Heroku 的数据库 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()... 检查,我会得到 no suitable driver found for [my db url] 错误。< br/>关于最后一个错误,我尝试了 JDBC_DATABASE_URLDATABASE_URL env vars,甚至用 sslmode=require “手动”构建了数据库 URL等,但仍然没有运气。
我的 pom.xml 指定了 modelVersion、groupId、artifactId、versionname,以及:

<dependencies>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.4.1208</version>
</dependency>
</dependencies>

Heroku 用来启动应用程序的我的 Procfile 看起来像这样:

web: java $JAVA_OPTS -cp target/classes:"target/dependency/*" Main --port $PORT

当我部署应用程序时,我没有收到任何错误,构建成功。

驱动不加载的原因是什么?我是否忘记了 pom.xml、Procfile 或其他内容中的某些内容?

最佳答案

有时,便利(比如像我一样使用 IntelliJ 的 git 集成推送到 Heroku)会导致不必要的问题。

我使用 git push 在 Heroku 上更新我的应用程序。一切都很好,除了所需的库没有到位。
尝试过 mvn heroku:deploy,经过测试,一切正常!谢谢codefinger对于建议。

如果有人问,如果您以前从未做过,这里是您如何做的:
1) 添加 Heroku Maven Plugin到您的 pom.xml:

    <build>
<plugins>
<plugin>
<groupId>com.heroku.sdk</groupId>
<artifactId>heroku-maven-plugin</artifactId>
<version>2.0.6</version>
</plugin>
</plugins>
</build>

2) 执行maven目标heroku:deploy
就是这样

关于java - Heroku 找不到 Postgres JDBC 驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36683006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com