Javac liefert alle notwendigen Informationen. Es kann jedoch nützlich sein, Ant oder Maven für Befehlszeilen-Builds zu verwenden.
This Seite bietet ein gutes Beispiel für die Verwendung von zuerst javac und dann Ant zum Erstellen eines einfachen Projekts.
Hier ist ein Beispielprojekt und wie kann es mit javac kompiliert werden.
Die Baumstruktur des Projekts ist dies:
.
├── build
└── src
├── attacks
├── drivers
│ └── Driver.java
└── exceptions
└── MyException.java
Es gibt zwei spezielle Verzeichnisse - build
für kompilierten Klassen und src
enthält Quelldateien enthalten (in verschiedenen Unterverzeichnisse sein könnte - Pakete). Der folgende Befehl kompiliert das gesamte Projekt und fügt das Ergebnis in das Verzeichnis build
ein.
javac -sourcepath src -d build src/**/*.java
Die -sourcepath src
gibt Verzeichnis src
als den Ort, wo die ganze Quelle kann durch den Compiler zu finden. Die Optionen -d build
teilt dem Compiler mit, wo die kompilierten Dateien abgelegt werden sollen.
Die Option src/**/*.java
teilt dem Compiler mit, welche Dateien tatsächlich kompiliert werden sollen. In diesem speziellen Fall wird javac angewiesen, zwei Ebenen nach unten zu suchen und alle * .java auf dieser Ebene auszuwählen.
Wenn *.java
Dateien auf verschiedenen Ebenen vorhanden sind, muss eine Liste mit Dateien angegeben werden. Dazu könnte man eine solche Liste als eine externe Datei erstellen und diese Dateien wie in der Eingabeoption für javac
übergeben.
Hier ist, wie dies unter Linux/Unix getan werden könnte:
find -name "*.java" > source.txt
Der obige Befehl erstellt Datei source.txt die vollständigen Pfade für die gefundenen * .java-Dateien enthält.Für dieses Beispiel enthält:
./src/drivers/Driver.java
./src/exceptions/MyException.java
Um das Projekt mit der Liste der Quelldateien in source.txt
, der folgenden Befehl gespült kompilieren kann verwendet werden:
javac -d build @source.txt
Bitte beachten Sie, dass @source.txt
bei der angegebenen end, das dem Compiler sagt, wo er nach einer Liste von Quelldateien suchen soll. Bitte beachten Sie auch, dass die Option -sourcepath
weggelassen werden kann.
Hier ist, wie die Verzeichnisstruktur nach dem Ausführen des obigen Befehls geändert wurde.
.
├── build
│ ├── drivers
│ │ └── Driver.class
│ └── exceptions
│ └── MyException.class
└── src
├── attacks
├── drivers
│ └── Driver.java
└── exceptions
└── MyException.java
Wie das build
Verzeichnis nun beobachtet werden, enthält die kompilierten Klassendateien in den jeweiligen Paketen.
Und wenn Sie es ausführen möchten, unter der Annahme, dass Driver
Methode main
hat, führt der folgende Befehl das Programm aus.
java -cp .:build:**/*.class drivers.Driver
Bitte beachten Sie, dass die Datei Separator :
(Kolon) unter Unix verwendet, für Windows es ;
(Semikolon) ändern.
Wenn Sie in 'argfile' die Liste aller zu kompilierenden Dateien haben, können Sie [' javac @ argfile'] ausführen (http://docs.oracle.com/javase/7/docs/technotes/tools/ windows/javac.html # commandlinearegfile). Wenn Sie andere Bibliotheken verwenden, müssen Sie den Klassenpfad hinzufügen. – Alberto
Wenn ich etwas wie die Bearbeitung des Klassenpfadnamens (in diesem Fall) mache, wo soll ich es tun und wie? Ich habe gehört, dass das in der Manifest-Datei gemacht wird, aber ich weiß, dass es auch in den OS-Einstellungen gemacht werden kann. – OKGimmeMoney
Sie können die Klassenpfadabhängigkeit über die Option '-classpath' hinzufügen, beispielsweise:' javac -classpath \ examples; \ lib \ Banners.jar \ examples \ greetings \ Hi.java'. Sehen Sie sich http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html und http://docs.oracle.com/javase/7/docs/technotes/tools/windows/ an. Classpath.html. – Alberto