我有一个使用仿制药和几个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的内容才能使这项工作?

有帮助吗?

解决方案

我没有使用过这两种解决方案,但是有

  1. RetroweAver
  2. 指定不支持的 -target jsr14 可能 工作
  3. 转向转换器
  4. Declawer
  5. jbossretro

您可能还会发现 javac -XD-printflat 有用(尽管注意不要覆盖您的原始来源)。

其他提示

我有一个使用仿制药和几个Java 1.5/6位的项目。是否可以编译此代码以在运行1.4 JRE的系统上工作?

不。

我是否必须仔细研究我的所有代码并更改1.5的内容才能使这项工作?

是的。但是有一种方法可以自动化,使用一种称为的工具 RetroweAver. 。不能保证它会抓住一切。

我在转向转换器方面有很好的经验(RetroweAver与我所需要的东西不佳,无法确切记住什么)。

它用于我的目的非常好(创建JDK1.4版本的logback)。

http://retrotranslator.sourceforge.net/

仿制药是通过类型擦除实现的,因此应在引入仿制药之前工作。但是,您将无法使用旧版本的编译器编译代码(我不知道为什么要这样做)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top