Einstellen JAVA_HOME wenn Ant von Java läuft
Frage
Der Grund ist lang und langweilig, aber ich brauche einen Ant-Skript ausführen Java 1.5-Code von einem Java 1.4 app zu kompilieren. Ich halte diesen Fehler, aber:
BUILD FAILED
build.xml:16: Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "C:\j2sdk1.4.2_16\jre"
In meinem Code, ich habe:
Project p = new Project();
p.setUserProperty("ant.file", buildFile.getAbsolutePath());
p.setProperty("java.home", "C:\Program Files\Java\jdk1.6.0_04");
p.fireBuildStarted();
p.init();
// so on and so forth
, aber es ignoriert. Ich habe auch p.setUserProperty (String, String) versucht, aber das macht es nicht getan, auch nicht. Gibt es eine Möglichkeit, es zu tun, ohne einen separaten Prozess zu starten?
Lösung
Ist die javac Aufgabe in Ihrem Buildfile fork="yes"
haben? Wenn nicht, dann ist es egal, was die java.home
Eigenschaft gesetzt ist; Ameise der javac Main
Methode in dem gleichen Java-Prozess versuchen zu nennen, die von Ihrem Fehler ein JRE, kein JDK.
Bearbeiten Versuchen Sie, die executable
Eigenschaft Ihrer javac Aufgabe auf den vollständigen Pfad zum javac
binären Einstellung und fügen compiler="extJavac"
zur Aufgabe.
Andere Tipps
Sollte nicht die Schrägstriche verdoppelt werden?
p.setProperty("java.home", "C:\\Program Files\\Java\\jdk1.6.0_04");
Haben Sie Umgebungsvariablen JAVA_HOME und ANT_HOME richtig eingestellt? Wenn Sie über Code setzen es sollte jedoch funktionieren.
Überprüfen Sie auch, ob Ihre% JAVA_HOME% \ bin% ANT_HOME% \ bin in der Umgebungsvariablen 'Pfad' sein sollte.
Ihr Problem scheint mit dem% JAVA_HOME% \ ist nicht anwesend in der ENVT zu sein. Variable Weg though.
Eine andere Möglichkeit, diese Arbeit zu machen ist ‚tools.jar‘ auf Ihrem Classpath hinzuzufügen. Der javac Compiler wird in diesem Gefäß enthalten ist.
java -cp $ JAVA_HOME / lib / tools.jar ...
javac Option ist in tools.jar verfügbar. In Eclipse, auch wenn Ihre JRE HOME zeigt auf eine jdk, alle Systembibliotheken verweisen auf JDK_HOME \ jre \ lib. Es gibt keine tools.jar. Sie können tools.jar als externe Jar-Datei hinzufügen. Dies sollte Ihr Problem lösen