使用 Maven 为 Heroku 编写纯 Java 服务器应用程序。
连接到 Heroku 的 Postgres 数据库。
运行时一切正常locally,使用 IntelliJ 的配置来运行 Java 应用程序,将 Heroku 的 DB URL 指定为环境变量。该应用程序可以运行,我可以连接到数据库。
注意:我发现 IntelliJ 以某种方式自动使用自己的 Postgres 驱动程序,我在 pom.xml 中指定的驱动程序显然会被忽略
然而,当我deploy在应用程序中,一旦连接到数据库,我的 Heroku 日志中就会出现以下错误:
java.lang.ClassNotFoundException: org.postgresql.Driver
我按照Heroku教程进行操作,但是当我看到没有连接时,我把
Class.forName("org.postgresql.Driver");
before
String dbUrl = System.getenv("JDBC_DATABASE_URL");
return DriverManager.getConnection(dbUrl);
只是为了确保找到司机。如果我删除Class.forName()...
检查,我得到no suitable driver found for
[我的数据库网址] error.
关于最后一个错误,我尝试了两种方法JDBC_DATABASE_URL and DATABASE_URLenv vars,甚至“手动”构建数据库 URL,sslmode=require
等等,但仍然没有运气。
我的 pom.xml 有modelVersion、groupId、artifactId、版本 and name指定,以及:
<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 或其他内容中的某些内容?