2012-03-28 34 views
0

私はクライアントジャーをJava 1.6で作成し、enumとjavaの他の新機能を使用しています。私のアプリケーションはJava 1.4に基づいています。 私のアプリケーションでそのクライアントjarを使いたいです。Javaバージョンの互換性の問題

これは実行可能ですか?

+1

なぜJava 1.4のアプリケーションをまだビルドしていますか? – paradigmatic

+1

"私のアプリケーションはjava 1.4でビルドされています":何らかの理由で1.4にソース互換にする必要がありますか、1.4 JREで実行する必要がありますか? 1.4互換ソースは、通常、1.6互換ソースです。 ;)(例:変数名として "enum"などの新しいキーワードを使用しない限り)。 – user1252434

答えて

2

通常:いいえ、できません。

Retroweaverのようなライブラリ/バイトコードリライタを使用して、1.4互換にライブラリを書き換えます。同じものや他のツールを実行するRetrotranslatorもあります。私がRetroweaverを最後に使ったのは、Java 5がリリースされた直後だったので、現在の状態について話すことはできません。

しかし、これは最高のハックになります。古くなったJavaバージョンを使用するのが最善の方法です。できるだけ早く Java 5でにアップグレードする必要があります。

0

JDK1.6にアップグレードできませんか?

は他のあなたのクラスパスにJDK1.6のrt.jarのを追加する必要があるが、それはJRE 1.6が必要になりますJDK1.4とJDK1.6に共通クラス

+0

いいえ、アプリケーションを1.6にアップグレードできません。何かあれば他の仕事を見つけたいですか? –

0

あなたのクライアントjarの競合が発生します。アプリケーションに関しては、Javaが下位互換性があるため、理想的にはJRE 1.6上で実行できるはずです。

したがって、アプリケーションをJRE 6に移植し、再コンパイルしてから、クライアントjarを使用できるようにする必要があります。

しかし、アップグレードと移植には、それ自体が複雑であり、結果があります。

0

Webサービスインターフェイス経由でjarを利用できるようにして、1.6として実行することもできます。うまくいくはずですが、私はあなたに簡単なことは言わないでしょう。

0

ライブラリコードを実行するには、明らかにJRE 1.6以上が必要です。下位互換性のため、アプリケーションの1.4部分もそのJRE上で実行する必要があります。あなたの1.6のlibと1.4のアプリケーションのやりとり方法は別の質問です。

アプリケーションでは、enumやその他の1.5機能を直接使用することはできません。ライブラリに直接アクセスするすべてのものが1.4互換であれば動作するはずです。例えば。アプリケーションがインタフェースを定義し、ライブラリがそれを実装している場合(つまり、典型的なプラグインのパターンです。)あなたのライブラリのインターフェースが1.5の機能を使用するためのアプリケーションを必要とするとします。メソッドパラメータとしてenum値を渡します。これは明らかに既存のバイトコードでは機能しません。