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ドライバーを使用するアクションのみがこの問題を引き起こし、アプリの残りの部分は問題なく動作するのですか?私がやった他のことは、jdk 6をダウンロードしてプロジェクトビルドパスに追加し、Eclipseコンパイラのコンプライアンスを1.6に設定しましたが、それでも同じ問題があります。どうすれば解決できますか?
解決策は、JDK 6用にコンパイルされたデータベースドライバーのコピーを使用することです。
ビルドの変更が機能したため、アプリケーションコードで問題が発生していないようです。 (具体的には、コンプライアンスレベルの変更。(通常の)ビルドパスにJDKを追加しても、違いが生じるとは思わない。)
しかし、もちろん、それはデータベースドライバーに何の違いももたらさないでしょう...あなたはそれをコンパイルしていないからです。
ただし、 ダウンロードページ によると、postgresql-9.2-1002.jdbc4は、Java 6および7と互換性があると想定されています。他の場所からのJAR ...またはJava 7ターゲットでソースからコンパイルすることにより。
[〜#〜] update [〜#〜]-ダウンロードサイトのJARに、バイトコードバージョンが50.0ではないドライバークラスがあることを確認できます51.0。そこから新しいコピーをダウンロードして使用することをお勧めします。
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
Mavenを使用している場合、中央リポジトリの 9.2-1002-jdbc4バージョン は1.7ターゲットを使用してコンパイルされています。修正されるまで前のバージョンを使用します。
これは最新のビルドID 1003で解決されたようです:
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.2-1003-jdbc4</version>
</dependency>
最良の方法は、Javaのアプリケーションをコンパイルし、Jre 1.6でコンパイルするアプリケーションがある場合、Jre 1.6の1.6以上のバージョンが必要であり、1つは
または
クラスファイルをコンパイルするだけです。JavaとJust Run on onで使用可能なDefault Jreのapplication.Javaファイルを意味します。
または3番目のオプション。
そのJREをダウンロードし、そのJREバージョンをマシンにインストールします。
同じ問題を抱えていた
このページで- http://jdbc.postgresql.org/download.html
セクション-現在のバージョン
Jvmのバージョンとpostgres jdbcドライバーに関する詳細は、私が理解するのに役立ちました。
この問題と、JDBCドライバーのロードに関するClassNotFoundExceptionの問題が発生しました。解決策は、 http://jdbc.postgresql.org/download.html#jdbcselection からpostgres jarの正しいバージョンを取得することです。 Mavenを使用している場合は、それに応じて依存関係のバージョンを追加します。
Java 6-incompatible Postgresドライバーの代替Java 7-friendlyバージョン(他のほとんどの回答で推奨されているように) HerokuでJava 7を使用してアプリケーションをコンパイルおよび実行します。開発にJDK 7を使用している場合、これは他の非互換性を回避するのに役立ちます。
これを行うには、Heroku Devcenterで これらの手順 に従ってください。概要は次のとおりです。
system.properties
という名前のファイルを作成します。プロパティJava.runtime.version=1.7
をファイルに追加します。つまり:
Java.runtime.version=1.7
system.properties
ファイルをコミットし、Herokuにプッシュします。