Java Heroku找不到Postgres JDBC驱动程序

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

使用Maven为Heroku编写纯Java服务器应用程序。 连接到Heroku的Postgres数据库。
当在本地运行时,一切都正常运行,使用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-URLDATABASE\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 goal
heroku: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>