1

私のプロジェクトは 1.4.2 JDK でビルドされています。JDK 1.6 でビルドされたサードパーティの jar とやり取りするようになりました。

クライアント クラスの使用中に互換性の問題が発生しています。私のJDKを1.6にアップグレードしたり、1.4.2でサードパーティのjarを再構築したりせずに解決することは可能ですか?

4

1 に答える 1

1

java.lang.UnsupportedClassVersionError例外が発生するため、JDK 1.6 でコンパイルされたクラスを以前の JDK 1.4 で実行することはできません。これは、Java には前方互換性がなく、後方互換性があるためです (仕様を参照)。

それを確認するために、JDK 1.4.2.19 と JDK 1.6.0.23 をインストールし、サンプル アプリケーションを作成しました。

パブリック クラス HelloWorld {
    public static void main(String[] args) {
            System.out.println("Hello world!");
    }
}

JDK 1.6.0.23 でビルド:

 ../1.6.0.23/bin/javac HelloWorld.java

JDK 1.4.2.19 で実行します。

../1.4.2.19/bin/java HelloWorld

出力:

スレッド「メイン」java.lang で例外が発生しました。UnsupportedClassVersionError : HelloWorld
(サポートされていない major.minor バージョン50.0)
      java.lang.ClassLoader.defineClass0 (ネイティブ メソッド) で
      java.lang.ClassLoader.defineClass(ClassLoader.java:539) で
        ...


解決策: JDK 1.6 (および 1.5) で導入されたメソッドを呼び出さない場合は、JDK 1.4 でサードパーティ アプリケーションを再構築してみてください。

于 2011-01-21T16:30:15.243 に答える