Search code examples
javaantcompilationbackwards-compatibility

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


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?


Solution

  • 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).