私はクライアントジャーをJava 1.6で作成し、enumとjavaの他の新機能を使用しています。私のアプリケーションはJava 1.4に基づいています。 私のアプリケーションでそのクライアントjarを使いたいです。Javaバージョンの互換性の問題
これは実行可能ですか?
私はクライアントジャーをJava 1.6で作成し、enumとjavaの他の新機能を使用しています。私のアプリケーションはJava 1.4に基づいています。 私のアプリケーションでそのクライアントjarを使いたいです。Javaバージョンの互換性の問題
これは実行可能ですか?
通常:いいえ、できません。
Retroweaverのようなライブラリ/バイトコードリライタを使用して、1.4互換にライブラリを書き換えます。同じものや他のツールを実行するRetrotranslatorもあります。私がRetroweaverを最後に使ったのは、Java 5がリリースされた直後だったので、現在の状態について話すことはできません。
しかし、これは最高のハックになります。古くなったJavaバージョンを使用するのが最善の方法です。できるだけ早く Java 5でにアップグレードする必要があります。
JDK1.6にアップグレードできませんか?
は他のあなたのクラスパスにJDK1.6のrt.jarのを追加する必要があるが、それはJRE 1.6が必要になりますJDK1.4とJDK1.6に共通クラス
いいえ、アプリケーションを1.6にアップグレードできません。何かあれば他の仕事を見つけたいですか? –
あなたのクライアントjarの競合が発生します。アプリケーションに関しては、Javaが下位互換性があるため、理想的にはJRE 1.6上で実行できるはずです。
したがって、アプリケーションをJRE 6に移植し、再コンパイルしてから、クライアントjarを使用できるようにする必要があります。
しかし、アップグレードと移植には、それ自体が複雑であり、結果があります。
Webサービスインターフェイス経由でjarを利用できるようにして、1.6として実行することもできます。うまくいくはずですが、私はあなたに簡単なことは言わないでしょう。
ライブラリコードを実行するには、明らかにJRE 1.6以上が必要です。下位互換性のため、アプリケーションの1.4部分もそのJRE上で実行する必要があります。あなたの1.6のlibと1.4のアプリケーションのやりとり方法は別の質問です。
アプリケーションでは、enumやその他の1.5機能を直接使用することはできません。ライブラリに直接アクセスするすべてのものが1.4互換であれば動作するはずです。例えば。アプリケーションがインタフェースを定義し、ライブラリがそれを実装している場合(つまり、典型的なプラグインのパターンです。)あなたのライブラリのインターフェースが1.5の機能を使用するためのアプリケーションを必要とするとします。メソッドパラメータとしてenum値を渡します。これは明らかに既存のバイトコードでは機能しません。
なぜJava 1.4のアプリケーションをまだビルドしていますか? – paradigmatic
"私のアプリケーションはjava 1.4でビルドされています":何らかの理由で1.4にソース互換にする必要がありますか、1.4 JREで実行する必要がありますか? 1.4互換ソースは、通常、1.6互換ソースです。 ;)(例:変数名として "enum"などの新しいキーワードを使用しない限り)。 – user1252434