7

ジェネリックといくつかの Java 1.5/6 のビットとピースを使用するプロジェクトがあります。1.4 JRE を実行しているシステムで動作するようにこのコードをコンパイルすることは可能ですか?

ANT ビルド スクリプトと javac タスクを使用して、ライブラリをコンパイルします。ターゲット属性が 1.5 の場合、これは正常にビルドされます。

ターゲットを 1.4 に変更すると、次のエラーが発生します。

generics are not supported in -source 1.4 
(use -source 5 or higher to enable generics)

そこで、ソース属性を追加して、5 と 1.5 の値を試します。新しいエラー:

javac: source release 5 requires target release 1.5

これを機能させるには、すべてのコードを調べて 1.5 のものを変更する必要がありますか?

4

4 に答える 4

7

私はこれらのソリューションのどちらも使用していませんが、

  1. Retroweaver
  2. サポートされていないものを指定すると機能する-target jsr14 場合があります
  3. レトロトランスレーター
  4. デクラワー
  5. JBossRetro

また、役立つ場合もありますjavac -XD-printflat(ただし、元のソースを上書きしないように注意してください)。

于 2009-06-10T10:54:15.727 に答える
6

ジェネリックスといくつかのJava1.5/6ビットとピースを使用するプロジェクトがあります。1.4 JREを実行しているシステムで動作するようにこのコードをコンパイルすることは可能ですか?

いいえ。

これを機能させるには、すべてのコードを調べて1.5のものを変更する必要がありますか?

はい。しかし、Retroweaverと呼ばれるツールを使用して、それを自動化する方法があります。ただし、すべてをキャッチできるという保証はありません。

于 2009-06-10T10:55:14.803 に答える
1

私は Retrotranslator で良い経験をしました (retroweaver は私が必要としていたものでうまく動作しませんでした。正確に何を思い出せませんでした)。

私の目的(LogbackのJDK1.4バージョンの作成)には非常にうまく機能しました。

http://retrotranslator.sourceforge.net/

于 2009-06-10T11:47:15.587 に答える
0

ジェネリックは型消去によって実装されるため、ジェネリックが導入される前に機能するはずです。ただし、古いバージョンのコンパイラでコードをコンパイルすることはできません(なぜそれを実行したいかはわかりません)

于 2009-06-10T10:54:01.500 に答える