我有一个使用泛型和一些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内容才能使其正常工作?
答案 0 :(得分:7)
我没有使用过这些解决方案,但有
-target jsr14
可以工作您可能还会发现javac -XD-printflat
有用(但请注意不要覆盖原始来源)。
答案 1 :(得分:6)
我有一个使用泛型的项目 还有一些Java 1.5 / 6位片。 是否可以编译此代码 在运行1.4 JRE的系统上工作?
没有
我是否必须经历所有事情 我的代码并将1.5内容更改为 让这个工作?
是。但是有一种方法可以使用名为Retroweaver的工具实现自动化。虽然不能保证它能抓住一切。
答案 2 :(得分:1)
我有很好的使用Retrotranslator的经验(逆向导管不能很好地满足我的需要,不记得究竟是什么)。
它非常适合我的目的(创建Logback的JDK1.4版本)。
答案 3 :(得分:0)
泛型是通过类型擦除实现的,因此它们应该在引入泛型之前工作。但是,您将无法使用旧版本的编译器编译代码(我不知道您为什么要这样做)