2012-07-06 13 views
17

Ich möchte meine .java (mehrere) in eine .jar kompilieren, die mit mindestens Java 1.6 und neueren, vorzugsweise Java 1.5 und neueren Versionen von Java kompatibel sind. (Ich habe Java 1.7.0_5)Wie kompiliere ich ein .java mit Unterstützung für ältere Java-Versionen?

+0

Werfen Sie einen Blick auf http://www.veryant.com/support/phpkb/question.php?ID=57 – Mualig

+0

'javac -source 1.5-target 1.5 OverridingInternalExample.java' arbeitete für mich –

Antwort

13

Ja, Sie die Version des Compilers bei der Kompilierung einstellen. Und kompilieren Sie Ihren Java-Code in alte Versionen von Java.

Von Oracle Artikel: http://docs.oracle.com/javase/1.5.0/docs/tooldocs/windows/javac.html

Querübersetzbarkeit Beispiel

Hier verwenden wir Javac Code zu kompilieren, die auf einem 1,4 VM ausgeführt wird.

% javac -target 1.4 -bootclasspath jdk1.4.2/lib/classes.zip \ 
      -extdirs "" OldCode.java 

Sie können auch folgenden Parameter benötigen, um die Version Ihres Codes zu setzen.

-source release 

-Spezifiziert die Version des Quellcodes akzeptiert.

2

Sie können javac -target 1.5 <source files> verwenden.

Wenn Sie ein Build-System, Eclipse oder eine andere IDE zum Erstellen von Gläsern verwenden, geben Sie bitte an, welche.

+1

And' -source 1.5 ' –

+0

Ich habe Netbeans, aber ich kann nur Textdateien verwenden. Wie würde ich das in allen .java's in einem Verzeichnis anwenden? – Primm

+1

Mit Netbeans klicken Sie mit der rechten Maustaste auf Ihr Projekt, gehen Sie zu den Eigenschaften und ändern Sie das "Source/Binary Format" aus dem Dropdown-Menü am unteren Rand des sich öffnenden Dialogs – tofarr

0

Sie können die neueste Version des JDK verwenden und den Quelllevel auf 1,5 setzen - solange Sie keine Klassen/Methoden verwenden, die nach 1.5 eingeführt wurden, sollten Sie für alle Versionen von JVM 1.5 und höher in Ordnung sein :

-source 1.5

0

Ab JDK 9, JavaC eine neue Option für Unterstützung Cross-Kompilierung

javac -release N ... 

was

javac -source N -target N –bootclasspath rtN.jar 
0

Sie die Zielversion des Compilers niedriger als die Build Java entspricht angeben Version (alle Antworten im Grunde gesagt), aber Sie sollten nicht: Es ist ziemlich chaotisch, da es nur funktioniert, wenn Sie auch die Klassenbibliotheken für die eigentliche Zielversion liefern. Wenn Sie das tun, sind Sie viel besser dran, wenn Sie einfach diese alte Java-Version zum Kompilieren verwenden. Viel sauberer und weniger Dinge zum Einrichten. Für Java 9 sind die Optionen etwas netter, aber für das rt.jar brauchst du noch ein altes JDK.

Was können Sie tun, ist in Ihrem ide und dedvelopment Zyklus der -target/-bootclasspath Trick verwenden, um schneller Compiler und eine bessere Warnungen zu erhalten, aber IT und Release baut dann mit der Zielversion getan werden sollte.

Verwandte Themen