Ich verwende Ant 1.7.0 und installiere Java 1.6 in JAVA_HOME.
Ich möchte ein Projekt mit Java 1.5 erstellen, daher habe ich JAVA_HOME als mein Java 1.5-Verzeichnis exportiert.
java -version
sagt "1.5". Wenn ich Ant starte, wird Java 1.6 verwendet.
Antworten:
Hatte gerade dieses Problem, es geschah, weil ich die Build-Datei zum ersten Mal zur Ant-View hinzugefügt hatte, als die Standard-JRE 1.6 war.
Es gab keine projektspezifische JRE und ich habe die Standardeinstellung auf 1.5 geändert, sogar Eclipse wurde in 1.5 ausgeführt, und JAVA_HOME war ebenfalls 1.5. Beim Ausführen des Ant-Ziels über die Befehlszeile wurde JRE 1.5 verwendet, in Eclipse jedoch weiterhin 1.6.
Ich musste mit der rechten Maustaste auf das Ameisenziel klicken, Ausführen als ... auswählen und die JRE auf der Registerkarte JRE ändern. Diese Einstellung wird für nachfolgende Läufe gespeichert.
quelle
In Eclipse:
Klicken Sie mit der rechten Maustaste auf Ihre build.xml
Klicken Sie auf "Ausführen als" und dann auf "Externe Toolkonfigurationen ...".
Wählen Sie die Registerkarte JRE . Wählen Sie die JRE aus, die Sie verwenden.
Führen Sie die Aufgabe erneut aus. Es sollte jetzt in Ordnung sein.
quelle
Laut Ameisenhandbuch sollte die Einstellung JAVA_HOME funktionieren. Sind Sie sicher, dass die geänderte Einstellung für Ameise sichtbar ist?
Alternativ können Sie die Variable JAVACMD verwenden.
quelle
Sie können die Ziel- und Quelleneigenschaften des Javac-Tags verwenden, um eine Ziellaufzeit festzulegen. Im folgenden Beispiel wird jeder Quellcode auf die Zielversion 1.4 eines Compilers kompiliert, der Version 1.4 oder höher unterstützt.
<javac compiler="classic" taskname="javac" includeAntRuntime="no" fork=" deprecation="true" target="1.4" source="1.4" srcdir="${src}" destdir="${classes}">
Hinweis: 'srcdir' und 'destdir' sind Eigenschaftswerte, die an anderer Stelle im Build-Skript festgelegt wurden, z
<property name="classes" value="c:/classes" />
quelle
Führen Sie ant im ausführlichen Modus aus:
ant -v
und suchen Sie nach Hinweisen.quelle
ant -v
ich festgestellt, dass ant jdk1.7 korrekt verwendet, aber beim Build wurden alle Klassen im temporären Ordner weggelassen, da sie aufgrund meines vorherigen Versuchs bereits vorhanden waren. Also habe ich nur den temporären Ordner gelöscht und neu erstellt, diesmal mit jdk 1.7, wie ich es wollte. Könnte jemandem helfenSie können dies mit den folgenden Schritten erreichen, wenn Sie Eclipse IDE verwenden:
Klicken Sie mit der rechten Maustaste auf die Aufgabe in Ihrer Ant-Build-Datei (
build.xml
).Klicken Sie mit der Maus über "Ausführen als" auf "Externe Werkzeugkonfigurationen ...".
Fügen Sie "Argumente" Folgendes hinzu:
-Dant.build.javac.target=1.5 -Dant.build.javac.source=1.5
quelle
Datei erstellen:
<target name="print-version"> <echo>Java/JVM version: ${ant.java.version}</echo> <echo>Java/JVM detail version: ${java.version}</echo> </target>
Ausgabe:
[echo] Java/JVM version: 1.5 [echo] Java/JVM detail version: 1.5.0_08
quelle
Sie können in einer Javac-Aufgabe auch angeben, welche Kompatibilitätsstufe (1.4, 1.5, 1.6) Sie verwenden möchten. Sie können die Werte für die Quell- und Zielstufe festlegen. Überprüfen Sie die Dokumente hier: Dokumentation zur Javac-Aufgabe
quelle
-bootclasspath
Fügen Sie beim Kompilieren auch die Option hinzu, um die Kompatibilität zu gewährleisten .Dies ist eine ziemlich alte Frage, aber ich werde meine Notizen für zukünftige Referenzen hinzufügen.
Ich hatte ein ähnliches Problem und habe es behoben, indem ich die Reihenfolge der Exporte in der Variablen PATH geändert habe.
Zum Beispiel habe ich eine Methode zum Verketten von Zeichenfolgen mit meinem PATH verwendet (dies ist nur ein Beispiel):
$> export PATH='$PATH:'$JAVA_HOME
Wenn meine Variable PATH bereits ein Java enthalten würde, wäre der letzte Wert bedeutungslos, daher wäre die Reihenfolge von Bedeutung. Um dies zu lösen, begann ich es zu invertieren, indem ich zuerst meine Variable und dann den Pfad hinzufügte.
Nach dieser Idee habe ich die Reihenfolge umgekehrt, in der ANT_HOME exportiert wurde. Hinzufügen von JAVA_HOME vor ANT_HOME.
Dies könnte nur ein Zufall sein, aber es hat bei mir funktioniert.
quelle
Wenn Sie Eclipse nicht verwenden. Anschließend können Sie die Eigenschaft ant java direkt in der Datei ändern, wie hier erwähnt.
http://pissedoff-techie.blogspot.in/2014/09/ant-picks-up-incorrect-java-version.html
quelle
Wenn Sie Ant über Eclipse ausführen, verwendet die Eclipse jdk oder jre, die im Klassenpfad (Erstellungspfad) konfiguriert sind.
quelle
<echo message="Ant java version: ${ant.java.version}" />
Verwenden Sie die folgenden 2 Eigenschaften für das
javac
Tag:fork="yes" executable="full-path-to-the-javac-you-want-to-use".
Erläuterungen zu den Eigenschaften finden Sie hier
quelle
JAVACMD
ist eine Ameisenspezifische Umgebungsvariable. Ant doc sagt:Wenn Ihr
java.exe
vollständiger Pfad: lautetC:\Program Files\Java\jdk1.8.0_211\bin\java.exe
, erstellen Sie eine neue Umgebungsvariable mit dem NamenJAVACMD
und setzen Sie ihren Wert auf den genannten Pfad (einschließlich\java.exe
). Beachten Sie, dass Sie Ihr Terminal (cmd, Powershell usw.) schließen müssen, damit die neue Umgebungsvariable wirksam wird.quelle
Legen Sie gemäß der Ant-Dokumentation die
JAVACMD
Umgebungsvariable fest, um den Pfad zujava.exe
der JRE-Version zu vervollständigen, unter der Sie Ant ausführen möchten.quelle
Standardmäßig betrachtet die Ant die JRE als JRE-Version des Arbeitsbereichs. Sie müssen entsprechend Ihrer erforderlichen Version ändern, indem Sie die folgenden Schritte ausführen.
In Eclipse:
Klicken Sie mit der rechten Maustaste auf Ihre build.xml, klicken Sie auf "Ausführen als" und dann auf "Externe Toolkonfigurationen ...". Wählen Sie die Registerkarte JRE.
Wählen Sie die JRE aus, die Sie verwenden.
Führen Sie die Aufgabe erneut aus. Es sollte jetzt in Ordnung sein.
quelle
Legen Sie Ihre
JAVA_HOME
Umgebungsvariable mit der erforderlichen Java - Version (in Ihrem Fall Java 1.5), dann inbuild.xml
Gebrauchexecutable="${JAVA_HOME}/bin/javac"
innerhalb<javac></javac>
Tages.Beispiel:
<target name="java compiler" description="Compiles the java code"> <javac executable="${JAVA_HOME}/bin/javac" srcdir="./src" destdir="${build.dir}/classes"> </javac> </target>
quelle