2017-08-24 16 views
2

既存のサーバーはJava 1.6で動作しており、アップグレードできません。私はそのAPIにアクセスするためのいくつかのコードを書くとき、私はJava 1.8と互換性があり、いくつかのサードパーティ製の瓶/ APIを使用する必要が他のバージョンのJavaと互換性のあるコードをリンクする方法

は、日食は、私が今進むことができますどのように

Exception in thread "main" java.lang.UnsupportedClassVersionError: JVMCFRE003 bad major version

をスローします?これが重複する質問であるかどうか分からない場合は、これにいくつかのリンクを提供してください。

+0

できません。プロジェクトごとに1つの '' JDK''だけをリンクすることができます。あなたのライブラリが互換性がない場合 - 1.8にアップデートする、そうでなければ他のAPIを見つける –

答えて

2

ポイント:Java仮想マシンはではなく、と互換性があります。

「n + 1」コンパイラによって生成された.classファイルは、「n」JVMでは使用できません。

選択肢(あなたは特別のJavaの古いバージョン用にコンパイルするコンパイラに指示しない限り):あなたが実行できるかどうかを確認するJava 6

  • 用にコンパイルそのライブラリのバージョンを取得できる場合

    • を見ますJavaの8 JRE上のアプリケーションは、(新しい JVM上Java6のクラスを実行している問題はありません!)

    オプション1かなり醜い得ることができます - そのライブラリがシステムクラスに依存している可能性があるように、そのJava6にはありません。

  • 0

    いいえ、あなたはこれがあなたの場合は、同じプロジェクトに

    を倍数のJavaバージョンまたは偶数倍JVMsを使用することはできませんjavaの1.6

    1

    で動作している環境でのJava 1.8でコンパイル瓶を使用することはできませんこのAPIが本当に必要な場合は、いくつかの選択肢があります。使用するすべてのプロジェクトをアップグレードするのが最善の方法です。Java 1.8

    0

    他の人が指摘しているように、これはできません。しかし、使用したいライブラリの古いバージョンを見つけることができ、それらのライブラリが特定のバージョンのJavaをサポートしている可能性があります。これは、あなたがあなたのソフトウェアにバグを取り入れる可能性を意味するかもしれませんが、それは時間の経過とともにソフトウェアがどのように進化するかだけです。

    0

    このサードパーティ製のjarを使用する必要がある場合は、 を使用します。次に、-target 1.6(java 1.6をターゲットにする)を使用してサードパーティのjarをコンパイルする必要があります。 ソースを入手して自分でコンパイルしたり、他の人(ベンダー、おそらく)をコンパイルすることになるかもしれません。

    他のすべてのオプションは以下のとおりです。

      は、サードパーティのjarファイルを使用しないでくださいJavaの8
    1. にあなたのJVMをアップグレードし
    2. 。 Java 6と互換性のあるものを書いてください。
    関連する問題