2017-05-13 1 views
2

Ich bin mit einem sehr dummen Problem konfrontiert.Eclipse Build erfolgreich, aber die Befehlszeile gibt 'Code zu groß' Fehler

Wenn ich mein Projekt mithilfe der Eclipse-Benutzeroberfläche erstellen, wird es ordnungsgemäß erstellt und ausgeführt. Wenn ich es jedoch in der Befehlszeile mit dem einfachen alten javac (dh ohne ant oder maven Build-Tool) erstellen, bekomme ich einen code too large Fehler auf einer der Dateien (die, übrigens, ist ein Antlr3-generiert Java-Parser-Datei).

Was seltsam ist,:

  1. Mein Eclipse-Projekt auf das gleiche JDK zeigt, dass ich auf der Kommandozeile bin mit! Also, es ist nicht der Fall, dass ich unabsichtlich eingebauten Eclipse Java Compiler verwenden

  2. Wenn der Parser-Code wirklich 'zu groß' (einige Methode in es> 64K), warum ist nicht die Eclipse Build mit dem gleichen Fehler? Aus diesem Grund zögere ich auch nicht, meine Parser-Grammatik zu optimieren - eine viel kompliziertere Aufgabe.

Ich benutze Eclipse Neon und Oracle JDK 1.8.

+1

Die Eclipse-Benutzeroberfläche verwendet immer den Eclipse-Java-Compiler, sie verwendet niemals javac. Es kann also sein, dass der Eclipse-Compiler eine bessere Arbeit leistet. –

+0

Sie meinen, die Eclipse UI verwendet ihren eigenen Compiler ** auch wenn ** ich einen externen in den Installierten JREs spezifiziere? Wenn ja, was nützt es dann, unter Installierte JREs unseren eigenen Compiler anzugeben? – Harry

+2

Die installierte JRE wird für die Bibliotheken und die JVM beim Testen verwendet. Eclipse verwendet immer seinen eigenen Compiler, da es eine inkrementelle Kompilierung durchführen muss, die javac nicht ausführen kann. –

Antwort

3

Die Eclipse-Benutzeroberfläche verwendet immer den Eclipse-Java-Compiler, sie verwendet niemals javac. So kann es sein, dass der Eclipse-Compiler in diesem Fall einen besseren Job macht.

Die installierte JRE wird für die Bibliotheken und die JVM beim Testen verwendet. Eclipse verwendet immer seinen eigenen Compiler, da es eine inkrementelle Kompilierung durchführen muss, die javac nicht ausführen kann.

Verwandte Themen