编译为1.5编写的Java代码以使用1.4 JRE?
我有一个项目使用generics和一些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)
所以我添加了一个source属性并尝试使用值5和1.5。 新错误:
javac: source release 5 requires target release 1.5
我是否必须完成所有代码并更改1.5内容以使其工作?
我没有使用这些解决方案,但有
- 的Retroweaver
- 指定不受支持的
-target jsr14
可能有效 - Retrotranslator
- Declawer
- JBossRetro
您可能还会发现javac -XD-printflat
很有用(但请注意不要覆盖原始来源)。
我有一个项目使用generics和一些Java 1.5 / 6位碎片。 是否可以编译此代码以在运行1.4 JRE的系统上工作?
没有。
我是否必须完成所有代码并更改1.5内容以使其工作?
是。 但是有一种方法可以使用名为Retroweaver的工具实现自动化。 虽然不能保证它能抓住一切。
我对Retrotranslator有很好的经验(retroweaver不能很好地满足我的需要,不记得到底是什么)。
它非常适合我的目的(创建Logback的JDK1.4版本)。
generics是通过类型擦除实现的,因此它们应该在引入generics之前工作。 但是,您将无法使用旧版本的编译器编译代码(我不知道您为什么要这样做)