Compiling Java code written for 1.5 to work with 1.4 JRE?

狂风中的少年 提交于 2019-11-30 03:58:10

问题


I have a project that uses generics and a few Java 1.5/6 bits and pieces. Is it possible to compile this code to work on a system running a 1.4 JRE?

I use an ANT build script and javac task to compile the library. This builds fine while the target attribute is 1.5.

If I change the target to be 1.4 I get the following error:

generics are not supported in -source 1.4 
(use -source 5 or higher to enable generics)

So I add a source attribute and try a value of 5 and 1.5. New error:

javac: source release 5 requires target release 1.5

Am I going to have to go through all my code and change the 1.5 stuff to make this work?


回答1:


I've not used either of these solutions, but there is

  1. Retroweaver
  2. specifying the unsupported -target jsr14 may work
  3. Retrotranslator
  4. Declawer
  5. JBossRetro

You might also find javac -XD-printflat useful (though take care not to overwrite your original source).




回答2:


I have a project that uses generics and a few Java 1.5/6 bits and pieces. Is it possible to compile this code to work on a system running a 1.4 JRE?

No.

Am I going to have to go through all my code and change the 1.5 stuff to make this work?

Yes. But there's a way to automate that, using a tool called Retroweaver. There's no guarantee that it will catch everything though.




回答3:


I have had good experience with Retrotranslator (retroweaver did not work well with what I was needing, cannot remember exactly what).

It worked very well for my purpose (creating JDK1.4 versions of Logback).

http://retrotranslator.sourceforge.net/




回答4:


Generics are implemented by type erasure so they should work before generics were introduced. However you would be unable to compile the code with an older version of the compiler (I don't know why you would want to do that)



来源:https://stackoverflow.com/questions/974836/compiling-java-code-written-for-1-5-to-work-with-1-4-jre

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!