编译为1.5编写的Java代码以使用1.4 JRE?

Adr*_*lie 7 java ant compilation backwards-compatibility

我有一个项目,使用泛型和一些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)
Run Code Online (Sandbox Code Playgroud)

所以我添加了一个source属性,并尝试使用值5和1.5.新错误:

javac: source release 5 requires target release 1.5
Run Code Online (Sandbox Code Playgroud)

我是否必须完成所有代码并更改1.5内容以使其工作?

Ste*_*nne 7

我没有使用这些解决方案,但有

  1. 的Retroweaver
  2. 指定不受支持的-target jsr14 可能有效
  3. Retrotranslator
  4. Declawer
  5. JBossRetro

您可能也觉得javac -XD-printflat有用(但要注意不要覆盖原始来源).


Mic*_*rdt 6

我有一个项目,使用泛型和一些Java 1.5/6位碎片.是否可以编译此代码以在运行1.4 JRE的系统上运行?

没有.

我是否必须完成所有代码并更改1.5内容以使其工作?

是.但是有一种方法可以使用名为Retroweaver的工具实现自动化.虽然不能保证它能抓住一切.