javac ist ein Befehlszeilentool, das vom Java Development Kit (JDK) bereitgestellt wird und die Java-Quelldateien in Bytecode-Dateien kompiliert, die auf einer Java Virtual Machine (JVM) ausgeführt werden können. Es bietet viele Flags, mit denen Sie den Kompilierungsprozess konfigurieren und verschiedene Parameter festlegen können.
Die falsche Verwendung von Javac-Flags kann jedoch zu unerwünschten Ergebnissen führen. Beispielsweise können falsch angegebene Parameter zu Kompilierungsfehlern oder unerwünschtem Verhalten des kompilierten Programms führen.
Einige der am häufigsten verwendeten Javac-Flags umfassen Folgendes:
-d: legt das Verzeichnis fest, in dem die Ausgabedateien erstellt werden sollen
-classpath: gibt den Suchpfad für die geladenen Klassen und Pakete an
-sourcepath: gibt den Pfad zu den Quelldateien an
-verbose: zeigt detaillierte Berichte zum Kompiliervorgang an
Die korrekte Verwendung dieser Flags sowie anderer Javac-Flags ermöglicht es Ihnen, den Kompilierungsprozess an die Anforderungen eines bestimmten Projekts anzupassen und die Effizienz bei der Entwicklung und dem Debuggen von Java-Anwendungen zu verbessern.
Grundlagen der Verwendung von Javac-Flags
Einige grundlegende Javac-Flags sind unten aufgeführt:
-d directory: Gibt das Verzeichnis an, in das die kompilierten Dateien abgelegt werden sollen. Wenn das Verzeichnis nicht existiert, erstellt der javac-Befehl es. Zum Beispiel javac -d bin src/HelloWorld.java kompiliert die HelloWorld-Datei.java und fügt das Ergebnis in das bin-Verzeichnis ein.
-cp path: Gibt die Pfade an, um die Klassen und Pakete zu finden, die zum Kompilieren und Ausführen des Programms benötigt werden. Pfade können durch ein Semikolon (;) oder einen Doppelpunkt (:) getrennt werden. Zum Beispiel ist javac -cp lib/mysql.jar src/Database.java kompiliert die Datenbankdatei.java mit Klassen aus der MySQL-Bibliothek.ein JAR, das sich im lib-Verzeichnis befindet.
-source version: Gibt die Version der Java-Sprache an, mit der der Code kompatibel ist. Es kann zum Beispiel 1.8, 11 oder 14 sein. Zum Beispiel javac -source 11 src/HelloWorld.java kompiliert die HelloWorld-Datei.java unter Verwendung der Java 11-Sprachsyntax.
-target version: Gibt die Version der JVM an, für die der Bytecode kompiliert werden soll. Es kann zum Beispiel 1.8, 11 oder 14 sein. Zum Beispiel ist javac -target 11 src/HelloWorld.java kompiliert die HelloWorld-Datei.java ist ein Bytecode, der auf der JVM Version 11 ausgeführt werden kann.
-g: aktiviert die Generierung von Debug-Informationen, die beim Debuggen des Programms helfen. Zum Beispiel javac -g src/HelloWorld.java kompiliert die HelloWorld-Datei.java mit Debug-Informationen.
-Werror: konvertiert Compilerwarnungen in Fehler und beendet die Kompilierung, wenn Warnungen erkannt werden. Zum Beispiel javac -Werror src/HelloWorld.java stoppt die Kompilierung, wenn Warnungen im Code gefunden werden.
Dies sind nur einige Javac-Flags, die beim Kompilieren von Java-Code zur Verfügung stehen. Der Javac-Befehl unterstützt viele weitere Flags, die beim Entwickeln und Debuggen von Java-Anwendungen nützlich sein können.
javac: was ist das?
javac akzeptiert verschiedene Befehlszeilenparameter und -argumente. Mit den Javac-Parametern können Sie den Kompilierungsprozess anpassen und beeinflussen, wie die Quelldateien verarbeitet werden.
Einer der Hauptparameter von javac ist das Flag -d, das das Zielverzeichnis angibt, in das die kompilierten Dateien gespeichert werden sollen. Ein weiteres wichtiges Flag, classpath, definiert den Pfad zu den Klassen und Paketen, die in den Quelldateien verwendet werden.
Quelldateien werden als Befehlszeilenargumente übergeben und können als Dateien oder Verzeichnisse angegeben werden. Wenn ein Verzeichnis angegeben ist, kompiliert javac alle Dateien mit der Erweiterung rekursiv .java in diesem Verzeichnis und seinen Unterverzeichnissen.
Darüber hinaus unterstützt javac andere Flags und Parameter wie -sourcepath, -encoding, -Xlint, mit denen Sie die Kompilierung anpassen und mögliche Probleme im Quellcode erkennen können.
Mit den richtigen Javac-Flags und -Parametern können Sie Java-Quelldateien mit verschiedenen Einstellungen kompilieren und den Kompilierungsprozess steuern, um die gewünschten Ergebnisse zu erzielen.
Javac-Parameter: Wo und wie kann ich sie angeben?
Das Kompilieren von Java-Code mit Javac kann mit verschiedenen Parametern konfiguriert werden, die beim Aufrufen des Javac-Befehls angegeben werden. In diesem Abschnitt werden wir untersuchen, wo und wie diese Parameter angegeben werden können.
1. Befehlszeile: Javac-Parameter können direkt in der Befehlszeile angegeben werden, wenn javac aufgerufen wird. Zum Beispiel:
- javac -classpath libs/* source/*.java - Gibt den Pfad zu Klassen und Quelldateien an
- javac -d build source/*.java - Gibt das Verzeichnis an, in dem kompilierte Klassen gespeichert werden sollen
- javac -sourcepath src source/*.java - Gibt den Pfad zu den Quelldateien an
2. Konfigurationsdatei: javac-Parameter können in einer Konfigurationsdatei angegeben werden, die dann mit dem Parameter -file an den javac-Befehl übergeben wird. Die Konfigurationsdatei muss im Textdateiformat sein und Javac-Parameter in einer separaten Zeile enthalten. Zum Beispiel:
- javac @options.txt - Gibt an, dass Optionen aus der options-Datei verwendet werden.txt
3. Umgebungsvariablen: Einige Javac-Parameter können mit Umgebungsvariablen angegeben werden. Beispielsweise kann der CLASSPATH-Parameter in der Umgebungsvariablen CLASSPATH festgelegt werden, um den Klassenpfad anzugeben. In diesem Fall muss der CLASSPATH-Parameter beim Aufruf von javac nicht explizit in der Befehlszeile angegeben werden.
Jetzt wissen Sie, wo und wie Javac-Parameter angegeben werden können. Dies kann nützlich sein, wenn Sie Java-Code für Ihr Projekt kompilieren.
Javac-Startflags: Grundlegende Anwendungsfälle
- -classpath oder -cp : Hier können Sie den Pfad zu den Klassen und geladenen Bibliotheken angeben. Sie müssen alle Pfade durch ein Semikolon unter Windows oder einen Doppelpunkt unter Linux und macOS angeben.
- -d : Gibt das Verzeichnis an, in das die kompilierten Klassen gespeichert werden sollen.
- -sourcepath : Hier können Sie den Pfad zu den Java-Quellcodedateien angeben.
- -source : Gibt die Version des Java-Quellcodes an.
- -target : gibt die Version der Java-Zielplattform an, für die der Code kompiliert wird.
- -encoding : Gibt die Zeichencodierung der Quelldateien an.
- -Xlint:option : Ermöglicht das Aktivieren oder Deaktivieren bestimmter Compilerwarnungen.
- -verbose : Zeigt detaillierte Informationen zum Kompiliervorgang an.
Die obigen Flags stellen nur einen kleinen Teil der Javac-Funktionen dar und können kombiniert werden, um verschiedene Aspekte der Kompilierung von Java-Code anzupassen. Eine vollständige Liste der Flags und eine detaillierte Beschreibung der Flags finden Sie in der Dokumentation des Java-Frameworks.
Die Verwendung verschiedener Javac-Flags ermöglicht eine effiziente Konfiguration und Verwaltung des Kompilierungsprozesses und bietet Flexibilität und Kontrolle über die generierten Java-Klassen.
Flags zum Angeben der Java-Version
Mit javac-Flags können Sie angeben, welche Java-Version benötigt wird, um den Quellcode zu kompilieren. Dies ist nützlich, wenn Sie mehrere Java-Versionen auf Ihrem System installiert haben und explizit angeben müssen, welche Version verwendet werden soll.
Grundlegende Flags zum Angeben der Java-Version:
- -source - Hier können Sie die Version des Java-Quellcodes angeben, z. B.: -source 1.8, um Java 8 anzugeben.
- -target - Hier können Sie die Version der Java-Zielplattform angeben, z. B.: -target 1.8, um Java 8 anzugeben.
Beispiel für die Verwendung von Flags zum Angeben der Java-Version beim Kompilieren des Quellcodes:
javac -source 1.8 -target 1.8 MyClass.java
In diesem Beispiel werden die Flags -source 1.8 und -target 1.8 verwendet, um die Version von Java 8 anzugeben. Hier ist MyClass.java ist der Name der Quelldatei, die kompiliert werden soll.
Die Verwendung von Flags zur Angabe der Java-Version ermöglicht die Kompatibilität des Quellcodes mit der gewünschten JVM-Version sowie die Vermeidung von Kompilierungsfehlern, die mit verschiedenen Java-Versionen zusammenhängen.
Flags für die Speicherverwaltung beim Kompilieren
Das Kompilieren von Java-Quelldateien in Bytecode kann insbesondere bei der Arbeit mit großen Projekten eine große Menge an Speicher erfordern. Um Speicherressourcen beim Kompilieren effizient zu nutzen, können Sie verschiedene Flags in der Javac-Befehlszeile verwenden.
Eines der wichtigsten Flags ist -Xmx , das die maximale Größe des für den Compiler verfügbaren Heaps festlegt. Zum Beispiel legt -Xmx2g die maximale Heapgröße auf 2 Gigabyte fest. Das Erhöhen der Heapgröße kann den Kompilierungsprozess beschleunigen, insbesondere bei der Arbeit mit großen Projekten.
Ein weiteres nützliches Flag ist -Xms , das die anfängliche Heapgröße festlegt. Zum Beispiel legt -Xms512m die anfängliche Heapgröße auf 512 MB fest. Wenn Sie eine ausreichend große anfängliche Heapgröße festlegen, kann dies dazu beitragen, die Speicherfragmentierung zu reduzieren und die Kompilierungsleistung zu verbessern.
Ein weiteres Flag für die Speicherverwaltung ist -XX:MaxPermSize , das die maximale Größe einer permanenten Generation festlegt. Die konstante Generation wird verwendet, um Metadaten zu Klassen und anderen permanenten Objekten zu speichern. Zum Beispiel legt -XX:MaxPermSize=256m die maximale Größe einer permanenten Generation auf 256 Megabyte fest.
Es ist jedoch erwähnenswert, dass einige Speicherverwaltungsflags in den neuesten Versionen des JDK veraltet oder nicht verfügbar sind. Daher sollten Sie vor der Verwendung von Flags überprüfen, ob sie in Ihrer Java-Version verfügbar sind.
| Flagge | Die Beschreibung |
|---|---|
| -Xmx | Legt die maximale Heapgröße fest |
| -Xms | Legt die anfängliche Heapgröße fest |
| -XX:MaxPermSize | Legt die maximale Größe der permanenten Generation fest |