23

Maven を使用して Web アプリを作成し、heroku にデプロイしました。すべてが見つかりますが、postgresql-9.2-1002.jdbc4 ドライバーを使用するアクションを呼び出すと、次のようになります。

java.lang.UnsupportedClassVersionError: org/postgresql/Driver : Unsupported major.minor version 51.0 (unable to load class org.postgresql.Driver)

問題は、開発環境でjdk 7を使用していて、herokuで下位バージョンが実行されていることです(少なくともそう思います)。私の最初の質問は、postqresql ドライバーを使用するアクションだけがこのエラーを発生させず、アプリの残りの部分が問題なく動作するのはなぜですか? 私がしたもう1つのことは、jdk 6をダウンロードしてプロジェクトのビルドパスに追加し、Eclipseコンパイラのコンプライアンスを1.6に設定することでしたが、それでも同じ問題が発生します。どうすればこれを解決できますか?

4

8 に答える 8

20

Java 6 の場合:

postgresql-9.2-1004-jdbc4.jar 
postgresql-9.3-1100-jdbc4.jar 

Java 7 の場合:

postgresql-9.2-1004-jdbc41.jar 
postgresql-9.3-1100-jdbc41.jar 
于 2013-12-18T12:41:58.780 に答える
17

解決策は、JDK 6 用にコンパイルされたデータベース ドライバーのコピーを使用することです。

ビルドの変更が機能したため、アプリケーション コードで問題が発生していないようです。(具体的には、コンプライアンス レベルの変更です。(通常の) ビルド パスに JDK を追加しても違いはないと思います。)

しかし、もちろん、それはデータベース ドライバーに何の違いもありません...それをコンパイルしていないからです。


ただし、ダウンロード ページによると、postgresql-9.2-1002.jdbc4 は Java 6 および 7 と互換性があると想定されています。 7 ターゲット。

更新- ダウンロード サイトの JAR に、バイトコード バージョンが 51.0 ではなく 50.0 の Driver クラスがあることを確認できます。そこから新しいコピーをダウンロードして使用することをお勧めします。

于 2013-04-15T16:01:41.697 に答える
6

これは、最新のビルド ID 1003 で解決されているようです。

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>9.2-1003-jdbc4</version>
</dependency>
于 2013-10-03T12:05:55.213 に答える
1

最善の方法は、アプリケーションがコンパイルするJavaの上位バージョンをインストールし、Jre 1.6でコンパイルされたアプリケーションがある場合、Jre 1.6の1.6以上のバージョンが必要であり、1つのことはそれです

また

クラスファイルをコンパイルするだけです。これは、Javaで利用可能で同じ上で実行するデフォルトのJreを使用したapplication.javaファイルを意味します。

または 3 番目のオプション。

その JRE をダウンロードし、その JRE バージョンをマシンにインストールします。

于 2014-07-23T09:56:28.013 に答える
0

Java 6 と互換性のない Postgres ドライバーを別の Java 7 対応バージョンに交換する代わりに (他のほとんどの回答で推奨されているように)、Heroku で Java 7 を使用してアプリケーションをコンパイルおよび実行することもできます。あなたが言うように、開発にJDK 7を使用している場合、これは他の非互換性を回避するのに役立つかもしれません。

これを行うには、Heroku Devcenterで次の手順に従います。要約は次のとおりです。

  1. system.propertiesアプリのベース ディレクトリにという名前のファイルを作成します。
  2. java.runtime.version=1.7プロパティをファイルに追加します。つまり、次のようにします。

    java.runtime.version=1.7
    
  3. ファイルをコミットし、system.propertiesHeroku にプッシュします。

于 2014-08-15T18:22:08.340 に答える
0

私はこの問題と ClassNotFoundException for loading JDBC driver 問題に遭遇しました。解決策は、 http://jdbc.postgresql.org/download.html#jdbcselectionから正しいバージョンの postgres jar を取得することです。Maven を使用している場合は、それに応じて依存関係のバージョンを追加してください。

于 2014-02-20T12:20:02.223 に答える
0

同じ問題がありました

このページ - http://jdbc.postgresql.org/download.html

セクション - 現在のバージョン

jvm バージョンと postgres jdbc ドライバーに関する詳細は、私がそれを理解するのに役立ちました。

于 2014-10-07T01:29:53.303 に答える