07.04.02 javac – Klassen kompilieren

Sie haben bereits mit dem Befehl javac gearbeitet. Dieser ist dafür zuständig, dass Ihr Java Quellcode in Bytecode umgewandelt wird, welchen Sie dann mit einer JRE ausführen können. In diesem Kapitel werden Sie die Parameter dieses Tools und ihre Funktionsweise kennenlernen.

Das javac-Tool finden Sie nicht in einer JRE-Installation, da javac nicht zum Ausführen von Java-Programmen benötigt wird. Es befindet sich im bin-Verzeichnis Ihres JDKs.

Unter Windows könnte dies z. B. C:\Programme\Java\jdk1.6.0_11\bin\javac.exe sein.

Wenn Sie über die Konsole den Befehl javac eintippen, erhalten Sie eine Auflistung aller möglichen Befehle, welche wir jetzt durcharbeiten werden.

Falls Sie keine Auflistung, sondern eine Fehlermeldung wie z. B. „Das Programm javac konnte nicht gefunden werden“ erhalten, ist das JDK nicht richtig installiert, oder die PATH-Variable nicht richtig gesetzt. Lesen Sie hierzu im Kapitel 01.03 Java installieren nach.

Beachten Sie, dass die Parameter immer vor die zu kompilierende Klasse (welche inkl. Dateiendung geschrieben werden muss) gestellt werden.

javac -parameter MyClass.java

Befehl Beschreibung
-g Generiert alle Debugger-Informationen und schreibt diese mit in den Bytecode. Dadurch ist es möglich bspw. lokale Variablen im Debugger zu untersuchen. Standardmäßig werden nur Zeilennummern und Informationen über den Quelltext erzeugt.
-g:none Verhindert, dass Zeilennummern und Informationen über den Quelltext mit in den Byte-Code geschrieben werden. Hierdurch werden die erzeugten .class-Dateien kleiner.
-g:{[lines:vars:source]} Durch diesen Parameter wird der Compiler veranlasst, nur bestimmte Debugging-Informationen mit in den Bytecode zu übernehmen (Informationen über den Quelltext => source, Zeilennummern => lines oder Informationen über lokale Variablen => vars). Es ist auch möglich mehrere Optionen durch Kommata Separierung miteinander zu verknüpfen.
-nowarn Unterdrückt die Ausgabe von Warnungen.
-verbose Gibt die Arbeitsschritte des Compilers aus.
-deprecation Sagt dem Compiler, dass detaillierte Meldungen über verwendete, als deprecated (siehe Deprecated-Kapitel) gekennzeichnete, Methoden ausgegeben werden sollen.
-classpath, -cp Gibt den Classpath an. Siehe Kapitel 07.03 Einbinden von externen Klassen – Classpath.
-sourcepath Hiermit kann der Pfad zum Java-Quellcode angegeben werden.
-bootclasspath, -extdirs, -endorseddirs Überschreibt den erweiterten Classpath. Siehe Kapitel 07.03. Einbinden von externen Klassen – Classpath.
-proc:{[none:only]} Kontrolliert, ob Annotationen ausgeführt oder kompiliert werden.
-processors Spezifiziert, wo der Annotation-Prozessor liegt.
-d Gibt ein Zielverzeichnis an, wohin die kompilierten Dateien gespeichert werden sollen. Standardmäßig wird das aktuelle Verzeichnis verwendet.
-s Gibt ein Zielverzeichnis an, wohin generierte Source-Dateien kopiert werden sollen.
-implicit:{[none,class]} Gibt an, ob oder ob keine zu generierenden Klassen von verweisenden Dateien eingeschlossen werden sollen.
-encoding Spezifiziert die Zeichencodierung, die von der zu kompilierenden Datei verwendet wird.
-source <release> Stellt die Kompatibilität der Quellcodes mit der übergebenen Java-Version sicher.
-target <release> Kompiliert den Sourcecode in Class-Dateien der übergebenen Java-Version.
-version Gibt die aktuelle JDK-Version aus.
-help Gibt die Standardoptionen von javac aus.
-Deigenschaft=wert Optionen für den Annotation-Prozessor.
-X Gibt die erweiterten Parameter für javac aus.
-J <parameter> Übergibt <parameter> direkt der Systemumgebung. z. B. könnte so die Stack-Größe des Compilers erhöht werden: javac -J-Xss1m.

Zusätzlich zu den genannten Standard-Optionen gibt es noch nicht standardmäßige Optionen. Diese Optionen müssen nicht (je nach verwendetem Compiler) zwingend zur Verfügung stehen.

Befehl Beschreibung
-Xlint Aktiviert die empfohlenen Warnungen.
-Xlint option Aktiviert oder Deaktiviert die in Optionen übergebenen Warnungen.
-Xbootclasspath/p:<path> Fügt den Übergebenen Pfad vor dem eigentlichen Bootstrap Classpath an.
-Xbootclasspath/a:<path> Fügt den Übergebenen Pfad nach dem eigentlichen Bootstrap Classpath an.
-Xbootclasspath:<path> Überschreibt den eigentlichen Bootstrap Classpath mit dem Übergebenen Pfad.
-Xmaxerrs Setzt die maximale Anzahl der Fehlermeldung, die ausgegeben werden sollen.
-Xmaxwarns Setzt die maximale Anzahl der Warnungen, die ausgegeben werden sollen.
-Xstdout <Dateiname> Leitet die Standardausgabe in die angegebene Datei um.
-Xprint Gibt spezielle Typen des Quellcodes beim Kompilieren auf der Konsole aus.
-XprintRounds Gibt Informationen über die ausgeführten Annotationen aus.
-XPrintProcessorInfo Gibt Informationen aus, welche Annotationen ein Annotation-Prozessor ausführen soll.
-Xprever:{[/source]} Spezifiziert, welche Datei verarbeitet werden soll, wenn die Quelldatei einer Klasse und die dazugehörige, kompilierte Klasse vorliegen.

Weitere Möglichkeiten mit javac

Sie können auch Wildcards beim Kompilieren verwenden. So ist es z. B. möglich alle Dateien in einem Verzeichnis zu kompilieren. Verwenden Sie hierzu den Befehl javac *.java.

Alternativ ist es ebenfalls möglich die zu kompilierenden Quellcodes in einer Datei zusammenfassen. Legen Sie sich hierzu eine Textdatei mit einem beliebigen Namen an. In dieser Textdatei werden die zu kompilierenden Quelldateien zeilenweise geschrieben:

AClass.java
AnOtherClass.java
MyClass.java

Wenn Sie jetzt nach javac den Dateinamen mit einem vorangestellten „@“ aufrufen, werden alle Dateien in der Textdatei kompiliert.

javac @sourcefiles.txt.

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.