编译为1.5编写的Java代码与1.4 JRE合作?
-
13-09-2019 - |
题
我有一个使用仿制药和几个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的内容才能使这项工作?
解决方案
我没有使用过这两种解决方案,但是有
- RetroweAver
- 指定不支持的
-target jsr14
可能 工作 - 转向转换器
- Declawer
- jbossretro
您可能还会发现 javac -XD-printflat
有用(尽管注意不要覆盖您的原始来源)。
其他提示
我有一个使用仿制药和几个Java 1.5/6位的项目。是否可以编译此代码以在运行1.4 JRE的系统上工作?
不。
我是否必须仔细研究我的所有代码并更改1.5的内容才能使这项工作?
是的。但是有一种方法可以自动化,使用一种称为的工具 RetroweAver. 。不能保证它会抓住一切。
我在转向转换器方面有很好的经验(RetroweAver与我所需要的东西不佳,无法确切记住什么)。
它用于我的目的非常好(创建JDK1.4版本的logback)。
仿制药是通过类型擦除实现的,因此应在引入仿制药之前工作。但是,您将无法使用旧版本的编译器编译代码(我不知道为什么要这样做)
不隶属于 StackOverflow