wake-up-neo.com

Warum sagt ANT, dass Java_HOME falsch ist, wenn es nicht ist?

Ich bekomme den Fehler: 

C:\dev\ws\springapp\build.xml: 81: Konnte keinen Javac-Compiler finden; Com.Sun.tools.javac.Main befindet sich nicht im Klassenpfad . Vielleicht verweist Java_HOME nicht auf den JDK . Derzeit ist es auf "C:\Programme\Java\jre6" gesetzt.

Aber ich habe mein Java_HOME eindeutig auf C:\Programme\Java\jdk1.6.0_14 gesetzt

Wo bekommt ANT diesen Wert?

58
Ankur

Wenn Sie sagen, Sie haben "Java_HOME" eindeutig auf "C:\Programme\Java\jdk1.6.0_14" gesetzt - sehen Sie das, wenn Sie "set" über die Befehlszeile ausführen? Ich glaube, Ant wird einen Wert für Java_HOME erraten, wenn einer überhaupt nicht gesetzt ist ... ist es möglich, dass Sie JAVAHOME anstelle von Java_HOME gesetzt haben?

Wenn es nicht so ist, schlage ich vor, dass Sie die ant.bat-Batchdatei (und wie auch immer sie aufgerufen wird) bearbeiten kann (ich kann mich nicht erinnern, ob sie sich verschlungen hat oder nicht), um Java_HOME zu Beginn und an verschiedenen anderen interessanten Stellen auszudrucken.

33
Jon Skeet
  1. Klicken Sie in Eclipse auf Run External Tools External Tools - Konfigurationen .
  2. Klicken Sie auf die RegisterkarteJRE.
  3. Klicken Sie auf die Schaltfläche Installierte JREs ... .
  4. Klicken Sie auf die Schaltfläche Hinzufügen .
    (Wählen Sie ggf. Standard VM aus.)
  5. Klicken Sie auf die Schaltfläche Directory .
  6. Navigieren Sie zu Ihrer JDK-Version (nicht JRE) Ihres installierten Java
    (z. B. C:\Program Files\Java\jdk1.7.0_04).
  7. Klicken Sie auf Fertig stellen undOK.
  8. Wählen Sie das JDK unter Separate JRE aus und klicken Sie auf Close .
  9. Führen Sie Ihr Ant-Skript erneut aus - viel Spaß!

Dies funktionierte in einem bestimmten Szenario, dem ich begegnete.

75
Luigi DAmico

Ich habe das gleiche Problem festgestellt, als ich versuchte, Antbuild mit dem folgenden Befehl auszuführen:

Java -cp ant.jar:ant-launcher.jar org.Apache.tools.ant.Main

Die Ausgabe des Befehls lautet:

BUILD FAILED
XXX/build.xml:8: 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 "/usr/lib/jvm/Java-6-openjdk/jre"

Es scheint, dass die Java-Programmdatei "/ usr/lib/jvm/Java-6-openjdk/jre" als Java_HOME auswählt, im Gegensatz zu "/ usr/lib/jvm/Java-6-openjdk", wo JDK installiert ist.

Ich habe dieses Problem behoben, indem Sie fork="yes" in meiner <javac>-Aufgabe eingestellt haben.

Werfen Sie einen Blick auf: http://ant.Apache.org/manual/Tasks/javac.html

17
Ronnie

Es ist auch möglich, dass Sie/bin in Ihre Java_HOME-Einstellung aufgenommen haben, und Ant fügt/bin hinzu - wodurch keine Exes gefunden werden. Es ist mir passiert:}

15
tom

Stellen Sie sicher, dass Sie nicht das nachgestellte Semikolon verwenden: Dies wird nicht funktionieren: 

set Java_HOME=C:\Program Files (x86)\Java\jdk1.6.0_29;

Dieser Wille:

set Java_HOME=C:\Program Files (x86)\Java\jdk1.6.0_29
8
pcomitz

Ich habe das ähnliche Problem getroffen. Ich würde eine Verbindung zu Ant-Task von Maven bauen und ich bekam das Problem. Ich habe es wie folgt korrigiert:

  • Stellen Sie sicher, dass Java_HOME richtig eingestellt ist. Sie können dies in Windows-Fenstern in der Befehlszeile überprüfen: C:> echo% Java_HOME% Das Ergebnis würde folgendermaßen aussehen: C:\Progra ~ 1\Java\jdk1.6.0_30 \
  • Kopieren Sie die Datei tools.jar aus% Java_HOME%\lib in das lib-Verzeichnis von Maven.

Und es hat für mich funktioniert. 

7
Luan Vo

Um dieses Problem zu lösen, fügen Sie die Datei tools.jar in window-> preferences-> ant-> runtime hinzu.

5
Shams

Setzen Sie in Eclipse die installierte JRE-Einstellung auf das JDK - im Projekt (Projekteigenschaften -> Java Build Path -> Libraries) oder globale Voreinstellung in den Voreinstellungen (Java -> Installierte JREs). Die Eclispe-Einstellung ist stärker als die Systemvariable.

4
r2d2

Ich hoffe, Sie kennen die Umgebungsvariablen von System und Benutzer. Die Benutzer werden dem System vorgezogen. Wenn Sie Ihr Java_HOME in Systemvariablen festgelegt haben und wenn in Benutzervariablen ein Eintrag für dasselbe vorhanden ist, wird nur der letztere angezeigt. 

Klicken Sie mit der rechten Maustaste auf Arbeitsplatz, Gehe zu Eigenschaften, wählen Sie die Registerkarte Erweitert aus und klicken Sie auf Umgebungsvariablen, um die Liste der Benutzer- und Systemumgebungsvariablen anzuzeigen.

3
vpram86

Das Semikolon warf mich ab: Ich hatte Java_HOME auf "C:\jdk1.6.0_26;" statt "C:\jdk1.6.0_26". Ich entfernte das nachgestellte Semikolon, nachdem ich Jon Skeets Vorschlag gefolgt war, die ant.bat-Datei zu untersuchen. Dies ist ein Teil dieser Datei:

if "%Java_HOME%" == "" goto noJavaHome
if not exist "%Java_HOME%\bin\Java.exe" goto noJavaHome

Daher wurde das Semikolon nicht am Ende gekürzt, sodass die Datei nicht gefunden werden konnte. Standardmäßig wurde "C:\Java\jre6" oder ähnliches verwendet.

Der verwirrende Teil ist, dass auf der HowtoBuild -Seite das Semikolon verwendet wird, dies scheint jedoch zu brechen.

3

Tatsächlich fand ich diese Antwort auf superuser.com, aber ich musste tools.jar aus meinem JDK\lib-Verzeichnis in das JRE\lib-Verzeichnis kopieren.

ZERO macht Sinn ... Das einzige, woran ich denken kann, ist, dass Sun diesen Fehler in die neueste Java-Laufzeitumgebung (Java 7 Update 11) oder einen Fehler in Ant eingeführt hat, wie er den aktuellen JDK-Speicherort liest (der JRE ist aktueller als der JDK was natürlich auch dumm von Sun ist ... sie sollten das JDK jedes Mal freigeben, wenn sie die JRE aktualisieren.

Mein Java_HOME wurde korrekt gesetzt. Ich bestätigte mit "set Java_HOME". Es zeigte auf mein JDK-Verzeichnis und wurde richtig geschrieben. Ant behauptete jedoch, dass es kein Javac finden konnte, dachte jedoch, Java_HOME sei in meinem JRE-Verzeichnis.

Mein System funktionierte vor den neuesten Sun JRE7-Updates (10 und 11) einwandfrei. Ameise ist Version 1.8.4

2
kenyee

Wenn alles andere korrekt ist, versuchen Sie Folgendes

  1. Springen Sie zu Fenster -> Einstellungen -> Ant -> Laufzeit -> ClassPath
  2. Erweitern Sie Globale Einträge und prüfen Sie die hier verfügbaren JDK-Tools.
  3. Fügen Sie die erforderliche tools.jar aus einer bestimmten Java-Version hinzu, beispielsweise "C:\Programme\Java\jdk1.6.0_45\lib\tools.jar". 
  4. Bauen Sie nun die Ergebnisse auf und prüfen Sie sie.

Hinweis: Fügen Sie tools.jar für den Java-Compiler hinzu, den Sie verwenden möchten, und geben Sie ihm den Vorzug, indem Sie ihn in der Liste der tools.jar nach oben verschieben, wenn mehrere tools.jar (Java-Compiler) vorhanden sind.

2
vikas pachisia

Wenn Sie Java_HOME eingestellt haben, aber ein Tippfehler darin enthalten ist, wird auch die falsche Referenz auf einen jre6-Pfad angezeigt.

2
d0mw

Ich stand vor demselben Problem und stellte fest, dass die ausführbare Eigenschaft im javac-Tag auf den Speicherort von javac.exe gesetzt wurde. Das Problem wurde für mich behoben

<javac srcdir="${srcDir}" destdir="${buildDir}" fork="true" executable="C:\Program Files\Java\jdk1.7.0_03\bin\javac"/>
2
user1244663

Legen Sie einfach den JDK-Pfad aus den folgenden Schritten fest:

  1. Gehen Sie zu 'Ausführen' -> Externe Tools -> Konfiguration externer Tools

  2. -> Wählen Sie 'JRE' Wählen Sie dann aus der DropDown-Liste das verfügbare JDK aus. Ex. jdk1.8.0_25

1
user3391421

Schnelle Arbeit für das gleiche ist

Kopieren Sie C:\Programme\Java\jdk1.6.0_14\lib\tools.jar nach C:\Programme\Java\jre6\lib \

Diese Ausnahme kommt, weil Java_HOME als C:\Programme\Java\jre6 festgelegt ist und Ant keine tools.jar darin finden kann.

0
minhas23

Es ist üblich, diese Ausgabe zu erhalten. Ich kann in meinem System kein spezifisches Java-Heim festlegen, da ich zwei unterschiedliche Java-Versionen (Java 6 und Java 7) für verschiedene Umgebungen habe. Um das Problem zu beheben, habe ich beim Öffnen des Builds den JDK-Pfad in die Laufkonfiguration aufgenommen XML-Datei. Auf diese Weise verwenden 2 verschiedene Build-Dateien 2 unterschiedliche Java-Versionen für Build. Ich denke, dass es möglicherweise eine bessere Lösung für dieses Problem gibt, aber zumindest vermeiden Sie es, die Java_HOME-Variable zu definieren.

0
user1588737

Zu Ihrer Information, ich verwende Windows 7 und musste Windows neu starten, damit die neue Einstellung Java_HOME wirksam wird.

0
user3113079

Wenn Sie ant in Eclipse mit eingebautem Eclipse jdk ausführen möchten, fügen Sie die folgende Zeile in build.xml hinzu

<property name="build.compiler" value="org.Eclipse.jdt.core.JDTCompilerAdapter"/>
0
Andrew TR

Legen Sie Java_HOME in den Umgebungsvariablen als D:\Program Files\IBM\SDP\jdk.__ fest. Geben Sie keine Anführungszeichen oder Semikolons an. Es funktioniert für mich. Bitte probieren Sie die Lösung aus. __ In ant.bat wird nach Java_HOME gesucht, falls ant.bat es nicht finden kann, dann Java_HOME zeigt die Standard-JRE.

0
Rajat Saha

hatte das gleiche Problem;

c:\jb\src\build.xml:191: 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:\Program Files\Java\jre7"

Total time: 0 seconds

c:\jb\src>echo %Java_HOME%
c:\Program Files\Java\jdk1.7.0_13

lösung:

path = c:\ant\bin\;%PATH%
path = c:\Program Files\Java\jdk1.7.0_17\bin;%PATH%
set "Java_HOME=c:\Program Files\Java\jdk1.7.0_13"

Ich denke, der jdk-Pfad allein würde es tun, aber ich bin zu faul, um herauszufinden, ob die Lösung kugelfest ist. :-)

Auch mit Windows7

0
macw

Dieses Problem hatte ich beim Aufbau meines Projekts mit Jenkins. Erstens konnte ant.bat nicht gefunden werden, was behoben wurde, indem der Pfad zu ant.bat zum Pfad der Systemumgebungsvariablen hinzugefügt wurde. Dann konnte ant das jdk-Verzeichnis nicht finden. Dies wurde behoben, indem Sie mit der rechten Maustaste auf my computer > properties > advanced > environment variables klicken und eine neue Umgebungsvariable mit dem Namen Java_HOME erstellen und ihr den Wert C:\Program Files\Java\jdk1.7.0_21 zuweisen. Erstellen Sie diese Umgebungsvariable nicht in Benutzervariablen. Erstellen Sie es nur unter Systemvariablen.
In beiden Fällen musste ich das System neu starten.

0
Nav

Ich stand auch vor dem gleichen Problem. Ich verwende Windows 7 und hatte zwei Java-Versionen installiert. Zuerst habe ich die neueste Version Java 7 und dann die Version 5 installiert.

Inhalt meines Java-Installationsverzeichnisses:

C:\Program Files\Java>
jdk1.5.0_14
jdk1.7.0_17
jre1.5.0_14
jre7

und mein Java_HOME wurde auf den korrekten Wert gesetzt.

C:\>set ja
Java_HOME=C:\Program Files\Java\jdk1.5.0_14

Trotzdem bekam ich das gleiche Problem:

XXXXXXX\build.xml:478: The following error occurred while
executing this line:
XXXXXXX\build.xml:477: 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:\Program Files\Java\jre7"

Nachdem ich alle Vorschläge in diesem Thread ausprobiert hatte, erkannte ich meinen Fehler. Ich habe versucht, die Umgebungsvariable in "Benutzervariablen" anstelle des Abschnitts "Systemvariablen" festzulegen. Nach dem Einstellen in "Systemvariablen" hat es gut funktioniert. Ich stehe jedoch vor einem anderen Problem.

Die Standardversion von Java, auf die es verweist, ist immer noch 7.

C:\>Java -version
Java version "1.7.0_17"
Java(TM) SE Runtime Environment (build 1.7.0_17-b02)
Java HotSpot(TM) Client VM (build 23.7-b01, mixed mode, sharing)

Ich bin nicht sicher, wie ich auf Version 5 verweisen soll. 

0
ggaur

Ich hatte das gleiche Problem. Mein JDK-Paket, auf das von Java_HOME verwiesen wird, hatte keine tools.jar.__ 

(offensichtlich ist der Nachrichtenfehler verwirrend)

0
ejaenv