2010-08-03 1 views
28

Wenn ich meine Ant-Build in Eclipse ausführen, erhalte ich die folgende Fehlermeldung und der Ant-Build schlägt fehl.Fehler beim Ausführen von javac.exe Compiler-Nachricht, während Ant in Eclipse verwenden

Fehlermeldung: Fehler beim Ausführen javac.exe Compiler

Linie, wo der Bau beendet:

<javac destdir="${classes.home}" debug="on" fork="true" memoryinitialsize="512M" memorymaximumsize="1G"> 
     <classpath refid="classpath"/> 
     <src path="${source.home}"/> 
</javac> 

Hat jemand vor ein ähnliches Problem konfrontiert? oder weiß jemand, was hier falsch ist?

Systeminformationen: Eclipse-Helio, JDK 1.5

+0

Gibt es keine Ausgabe mehr als das? Können Sie es mit ausführlicher Protokollierung ausführen? –

+0

keine Ausgabe nach der Fehlermeldung. Versuche es mit einer ausführlichen Protokollierung. – Veera

Antwort

52

Ich hatte das gleiche Problem und das Problem war, in Eclipse JAVA.HOME bezieht sich auf JRE anstelle von JDK. Ich habe es geändert und der Build war erfolgreich. Sie können Folgendes in JDK ändern:

Einstellungen> Java> Installierte JREs> Hinzufügen ... Wählen Sie für 'JRE Type' 'Standard VM'> Weiter> Verzeichnis: Wählen Sie Ihr JDK-Verzeichnis (statt JRE) (in meinem Fall: C: \ Programme \ Java \ jdk1.6.0_16), drücken Sie OK.

Jetzt sind Sie wieder bei "Installierte JREs", wählen Sie hier auch das JDK.

Der folgende Beitrag half bei der Suche nach der Lösung. JAVA_HOME points to the wrong place

+0

nur meine Zeit gespeichert – Forhad

6

Vielleicht ist das javac Problem, weil „javac.exe“ nicht in Ihrem Systempfad ist, geben Sie bitte Ihren Systempfad bearbeiten und/bin-Verzeichnis des JDK hinzufügen, um es zu korrigieren dieses Problem.

Öffnen Sie eine Shell oder Eingabeaufforderung und geben Sie Folgendes ein: javac, um zu überprüfen, ob der Systempfad korrekt eingestellt ist.

+0

Ich habe das JDK auf der Eclipse-Einstellungsseite "Installierte JREs" konfiguriert Ich denke, Eclipse kümmert sich darum, den JavaC auf Claspath zu setzen. – Veera

+0

Verwechseln Sie CLASSPATH nicht mit SYSTEM PATH, der Klassenpfad wird für Kompilierungszwecke verwendet, der Systempfad kümmert sich um Systembinärdateien. Sie können versuchen, wenn das Problem ist, nur den JDK bin Pfad an Ihren Systempfad anschließen. – Impiastro

+0

Dies ist auch eine andere Möglichkeit, um dieses Problem zu beheben. – prolink007

0

Versuchen Sie die Änderung von memorymaximumsize = "1G" zu memorymaximumsize = "512M".

4

Konfigurieren von Eclipse, um auf JDK statt JRE zu zeigen, funktionierte nicht für mich. Mit weiteren Untersuchungen löste ich dieses Problem, indem ich den Bauprozess vom Forking abbrach. Entfernen Sie in Ihrer Datei "build.xml" das Attribut fork vom Tag <javac>.

16

Ich hatte das gleiche Problem und entfernt das Attribut Gabel von JavaC und Problem war weg.

+0

Funktioniert für mich aber mit Warnmeldung: '[javac] Da Gabel ist falsch, ignorieren memoryInitialSize Einstellung. [javac] Da Gabel ist falsch, MemoryMaximumSize Einstellung ignorieren. – chance

0

Versuchen Sie, etwas Hauptspeicher freizugeben. Schließen Sie speicherhungrige Programme und stoppen Sie speicherhungrige Prozesse, wenn Sie können.

39

Wenn die oben genannte Antwort das Problem nicht für Sie löst (wie bei mir), nach dem Aktualisieren von java.home auf JDK anstelle von JRE, wie in der obenstehenden Antwort vorgeschlagen, gehen Sie zu Run - > Externe Tools -> Externe Tools Konfiguration -> wählen Sie Ihre build.xml im linken Menü -> wählen Sie JRE Registerkarte -> wählen Sie das JDK (aus dem Dropdown) für Separate JRE Radio Button-Option -> Klicken Sie auf Ausführen.

Dies sollte das Problem beheben.

+0

Vielen Dank .. es funktionierte :) – Atul

+0

dies funktionierte für mich, danke! – MCR

+3

+1, dies ist die genauere Antwort für diejenigen, die diesen Fehler beim Ausführen der Ameise bekommen. Ja, Sie müssen sicherstellen, dass das JDK als Standard-JRE festgelegt ist, aber Sie müssen Ihrem Ameisen-Build mitteilen, dass auch dieses JDK verwendet werden soll. –

2

Ich löste dies in meinem Windows meine Umgebungsvariablen Überprüfung 7. Ich fand, dass JAVA_HOME bis C zeigt: \ Program Files (x86) \ Java \ jdk1.6.0_31, wenn es sein C soll: \ Programmdateien \ Java \ jdk1.6.0_31.Wenn Sie wissen möchten, wie read this

0

ich alles versucht habe, aber nichts für mich gearbeitet, bis ich gesetzt habe (Gabel = ‚keine‘ oder Gabel = ‚false‘ in Ihrem Fall) und arbeitete für mich perfekt

0

Ich entfernte fork = "true" und ich habe das Stück Code hinter mir. Was könnte zu denen von Ihnen interessant sein, die dieses Problem haben, dass jetzt, in dieser Linie, ich die Ausgabe erhalten:

'Since fork is false, ignoring memoryMaximumSize setting.' 

So kann es ein Problem mit memoryMaximumSize, wenn Sie Ihre Gabel halten, müssen = "true "Einstellung, wie oben vorgeschlagen.

0

Ich reparierte das Problem wie folgt aus:

Mein Java Home-Ordner den falschen Weg hatte. Es hätte C:\Program Files (x86)\Java\jdk1.5.0_15 sein sollen, aber stattdessen war es C:\Program Files (x86)\Java\jdk1.5.0_15\bin.

3

Ich sah das gleiche Problem, und hier ist mein Rat, vielleicht wird es jemandem helfen.
In der Tat bedeutet Nachricht Error running javac.exe compiler, dass etwas schief gelaufen ist. Die Frage ist, was genau. Wenn Ant javac Task mit fork="true" Flag ausgeführt wird, werden keine Fehlerdetails gedruckt. In meinem Fall hat es nicht gedruckt, auch nachdem ich verbose="true" hinzugefügt habe, wie vorgeschlagen here.

ant -verbose 

Nach diesem Ant beginnt das Drucken in volle Fehlermeldungen, so dass Sie in der Lage, beheben ein Problem: Lösung -verbose Flag Ant Befehlszeile hinzuzufügen war.

0

Wir haben das gleiche Problem auf einer Windows-Build-Maschine getroffen, während lokal (auf einer Unix-Maschine) alles geklappt hat. Fork = true nur knapp sein Ziel half auch nicht, es in einem Prozess Gabel geführt Ausnahme auch nicht nur auf dem Build-Server

Forschung

Nach einigen Recherchen hatten wir einen Hinweis darauf, dass der Classpath zu lang sein könnte. Wir haben die genaue Ordnerstruktur lokal auf einer Windows Maschine erstellt und wir haben das gleiche Problem und wir sahen, dass der Klassenpfad viel zu lang war (wir verwendeten -v und -d für Details wie lange es war) und dies war die Ursache der Error.

Lösung

Die Lösung war ein Glas zu schaffen, die mit allen Bibliotheken nur das Manifest enthält finden this answer um weitere Informationen zu

0

Wenn Sie ant in Eclipse Klick laufen wie ausgeführt - > Ant zweite Option und wählen Sie JDK-Pfad und führen Sie den Build erneut aus.