Der Befehl javac: Unterschied zwischen den Versionen

Aus FI-Wiki
Die Seite wurde neu angelegt: „== Der Befehl '''javac''' == Der Befehl '''javac''' ist der Java-Compiler. Er übersetzt den geschriebenen Quellcode (Dateien *.java*) in Bytecode (Dateien *.class*), der später von der Java Virtual Machine ausgeführt werden kann. === Aufgabe des Compilers === Der Compiler übernimmt folgende Schritte: * prüft den Quellcode auf syntaktische Fehler * erzeugt Bytecode aus Java-Dateien * legt für jede Klasse eine eigenständige *.class*-Datei an…“
 
Keine Bearbeitungszusammenfassung
 
Zeile 2: Zeile 2:


Der Befehl '''javac''' ist der Java-Compiler.   
Der Befehl '''javac''' ist der Java-Compiler.   
Er übersetzt den geschriebenen Quellcode (Dateien *.java*) in Bytecode (Dateien *.class*), der später von der Java Virtual Machine ausgeführt werden kann.
Er übersetzt den geschriebenen Quellcode (Dateien *.java*) in Bytecode (Dateien *.class*), der später von der Java Virtual Machine ausgeführt wird.


=== Aufgabe des Compilers ===
=== Aufgabe des Compilers ===
Zeile 9: Zeile 9:
* prüft den Quellcode auf syntaktische Fehler   
* prüft den Quellcode auf syntaktische Fehler   
* erzeugt Bytecode aus Java-Dateien   
* erzeugt Bytecode aus Java-Dateien   
* legt für jede Klasse eine eigenständige *.class*-Datei an   
* legt für jede Klasse eine eigene *.class*-Datei an   
* verhindert die Ausführung fehlerhafter Programme   
* verhindert die Ausführung fehlerhafter Programme   
Ohne erfolgreichen Compilerlauf kann ein Java-Programm nicht gestartet werden.


=== Syntax von javac ===
=== Syntax von javac ===
Zeile 20: Zeile 18:
</syntaxhighlight>
</syntaxhighlight>


Dabei entsteht eine Bytecode-Datei:
Erzeugt:
* '''Dateiname.class'''
* '''Dateiname.class'''


=== Beispiel ===
=== Beispiel ===
Quellcode kompilieren:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
javac HelloWorld.java
javac HelloWorld.java
Zeile 33: Zeile 30:


=== Mehrere Dateien kompilieren ===
=== Mehrere Dateien kompilieren ===
Wenn ein Projekt mehrere Klassen enthält, können sie zusammen kompiliert werden:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
javac *.java
javac *.java
Zeile 40: Zeile 35:


oder gezielt:
oder gezielt:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
javac Main.java Datenbank.java Utils.java
javac Main.java Datenbank.java Utils.java
</syntaxhighlight>
</syntaxhighlight>


=== Ausgabeordner festlegen ===
=== Ausgabeordner festlegen (Option -d) ===
Mit dem Parameter '''-d''' kann festgelegt werden, in welchen Ordner die *.class*-Dateien gespeichert werden:
 
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
javac -d out Main.java
javac -d out Main.java
</syntaxhighlight>
</syntaxhighlight>


Ergebnis:
Die erzeugten *.class*-Dateien liegen danach im Ordner **out**.
* Bytecode befindet sich im Ordner **out**


=== Häufige Compilerfehler ===
=== Häufige Compilerfehler ===
{| class="wikitable" style="width:100%; text-align:center;"
{| class="wikitable" style="width:100%; text-align:center;"
! Fehler
! Fehler
! Ursache
! Typische Ursache
|-
|-
| cannot find symbol
| cannot find symbol
| Variable oder Methode ist nicht definiert
| Variable, Methode oder Klasse existiert nicht / falsch geschrieben
|-
|-
| class not found
| class not found
Zeile 67: Zeile 58:
|-
|-
| missing return statement
| missing return statement
| Methode hat keinen Rückgabewert angegeben
| Methode mit Rückgabewert enthält kein return
}
|-
| ';' expected
| Semikolon am Ende einer Zeile fehlt
|}


=== Vorteile von javac ===
=== Vorteile von javac ===
* findet Fehler vor der Ausführung   
* Fehler werden vor der Ausführung erkannt  
* erzeugt optimierten Bytecode   
* optimierter Bytecode   
* ermöglicht plattformunabhängige Programme   
* ermöglicht plattformunabhängige Programme   
* klare Trennung von Entwicklung (Quellcode) und Ausführung (Bytecode)
* klare Trennung zwischen Quellcode (Java) und Ausführung (JVM)


=== Kurz gesagt ===
=== Kurz gesagt ===
'''javac''' übersetzt Java-Quellcode in Bytecode.   
'''javac''' übersetzt Java-Quellcode in Bytecode.   
Ohne javac gibt es keine *.class*-Dateien und damit kein ausführbares Java-Programm.
Ohne erfolgreiche Kompilierung kann ein Java-Programm nicht starten.

Aktuelle Version vom 14. November 2025, 08:58 Uhr

Der Befehl javac

Der Befehl javac ist der Java-Compiler. Er übersetzt den geschriebenen Quellcode (Dateien *.java*) in Bytecode (Dateien *.class*), der später von der Java Virtual Machine ausgeführt wird.

Aufgabe des Compilers

Der Compiler übernimmt folgende Schritte:

  • prüft den Quellcode auf syntaktische Fehler
  • erzeugt Bytecode aus Java-Dateien
  • legt für jede Klasse eine eigene *.class*-Datei an
  • verhindert die Ausführung fehlerhafter Programme

Syntax von javac

Grundbefehl:

javac Dateiname.java

Erzeugt:

  • Dateiname.class

Beispiel

javac HelloWorld.java

Ergebnis:

  • HelloWorld.class wird erzeugt

Mehrere Dateien kompilieren

javac *.java

oder gezielt:

javac Main.java Datenbank.java Utils.java

Ausgabeordner festlegen (Option -d)

javac -d out Main.java

Die erzeugten *.class*-Dateien liegen danach im Ordner **out**.

Häufige Compilerfehler

Fehler Typische Ursache
cannot find symbol Variable, Methode oder Klasse existiert nicht / falsch geschrieben
class not found Dateiname stimmt nicht mit Klassenname überein
missing return statement Methode mit Rückgabewert enthält kein return
';' expected Semikolon am Ende einer Zeile fehlt

Vorteile von javac

  • Fehler werden vor der Ausführung erkannt
  • optimierter Bytecode
  • ermöglicht plattformunabhängige Programme
  • klare Trennung zwischen Quellcode (Java) und Ausführung (JVM)

Kurz gesagt

javac übersetzt Java-Quellcode in Bytecode. Ohne erfolgreiche Kompilierung kann ein Java-Programm nicht starten.