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?

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top