2009-06-10 10 views
7

Ich habe ein Projekt, das Generika und ein paar Java 1.5/6 Bits und Stücke verwendet. Ist es möglich, diesen Code zu kompilieren, um auf einem System mit einer 1.4 JRE zu arbeiten?Kompilieren von Java-Code, der für 1.5 geschrieben wurde, um mit 1.4 JRE zu arbeiten?

Ich benutze ein ANT-Build-Skript und Java-Task, um die Bibliothek zu kompilieren. Dies ist in Ordnung, während das Zielattribut 1,5 ist.

Wenn ich das Ziel ändern 1.4 ich folgende Fehlermeldung erhalten werden:

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

So füge ich ein Quellattribut und einen Wert von 5 und 1,5 versuchen. Neuer Fehler:

Muss ich meinen ganzen Code durchgehen und die 1.5 Sachen ändern, damit das funktioniert?

+0

Note 1.4 hat seine Lebensdauer Zeitraum abgeschlossen und 1,5 ist am meisten durch seine Art und Weise. "Java for Business" -Support ist jedoch zu einem Preis erhältlich. –

Antwort

7

Ich habe keine dieser Lösungen verwendet, aber es gibt

  1. Retroweaver
  2. die nicht unterstützte -target jsr14kann Arbeit spezifizieren
  3. Retrotranslator
  4. Declawer
  5. JBossRetro

Sie könnten auch javac -XD-printflat nützlich (obwohl Sie sich nicht die Quelle zu überschreiben) finden.

+0

Zweite scheint zu funktionieren. Jetzt, um zu testen, dass die Bibliothek tatsächlich auf JRE 1.4 funktioniert ... –

+1

jsr14 wird es nicht schneiden. Keine enum Unterstützung. Retroweaver auf der anderen Seite ist großartig. –

+0

Danke, Retroweaver war mir bisher nur bekannt.Die meisten dieser Tools geben explizit an, dass sie 1.4 als Ziel verwenden können, aber soweit ich das sehen kann, erlaubt es Ihnen nur Retroweaver, auch auf 1.2 zu zielen, was für die J2ME-Entwicklung benötigt wird. –

0

Generika werden durch Typ löschen implementiert, so dass sie funktionieren sollten, bevor Generika eingeführt wurden. Allerdings würden Sie nicht in der Lage, den Code mit einer älteren Version des Compilers zu kompilieren (ich weiß nicht, warum Sie wollen würden, das zu tun)

+0

Verwenden des JDK 1.6-Compilers. Es scheint nur komisch, dass Sie die Zielversion und Quellversion angeben können, aber es gibt einen Fehler, wenn diese nicht identisch sind. –

+0

Sie können eine frühere Quellversion als die Zielversion angeben. So kann Ihre 1.4-Quelle mit Enumerations namens enum immer noch JDKs im laufenden Betrieb kompilieren und bearbeiten. –

6

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?

Nr

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

Ja. Aber es gibt eine Möglichkeit, dies zu automatisieren, mit einem Tool namens Retroweaver. Es gibt keine Garantie, dass es alles fängt.

1

Ich hatte gute Erfahrungen mit Retrotranslator (Retroweaver funktionierte nicht gut mit dem, was ich brauchte, kann mich nicht genau erinnern, was).

Es funktionierte sehr gut für meinen Zweck (Erstellen von JDK1.4 Versionen von Logback).

http://retrotranslator.sourceforge.net/