Javac documentation zawiera wszystkie niezbędne informacje. Jednak może być użyteczne użycie Ant lub Maven dla buildów linii poleceń.
This strona zapewnia dobry przykład użycia pierwszego javac, a następnie Ant do zbudowania prostego projektu.
Oto przykładowy projekt i jak można go skompilować z javac.
Struktura drzewa projektu to:
.
├── build
└── src
├── attacks
├── drivers
│ └── Driver.java
└── exceptions
└── MyException.java
Istnieją dwa specjalne katalogi - build
do przechowywania skompilowanych klas i src
do zawierają pliki źródłowe (może być w różnych podkatalogów - Pakiety).
Następujące polecenie kompiluje cały projekt i umieszcza wynik w katalogu build
.
javac -sourcepath src -d build src/**/*.java
-sourcepath src
określa katalog src
jako miejsce, gdzie wszystko można znaleźć źródło przez kompilator. Opcje -d build
informują kompilator, gdzie umieścić skompilowane pliki.
Opcja src/**/*.java
mówi kompilatorowi, jakie pliki faktycznie skompilować. W tym konkretnym przypadku mówi on javacowi, że powinien przejrzeć dwa poziomy w dół i wybrać wszystkie * .java na tym poziomie.
Jeśli istnieją pliki *.java
na różnych poziomach niż musi być określona lista plików. W tym celu można utworzyć taką listę jako plik zewnętrzny i przekazać te pliki jako opcję wejściową dla javac
.
Oto jak można to zrobić pod Linux/Unix:
find -name "*.java" > source.txt
Powyższe polecenie tworzy plik source.txt zawierający pełne ścieżki dla znalezionych plików * .java.W tym przykładzie zawiera:
./src/drivers/Driver.java
./src/exceptions/MyException.java
Aby skompilować projekt z listy plików źródłowych przepłukać pod source.txt
następujące polecenie można stosować:
javac -d build @source.txt
Uwaga @source.txt
określone na end, który mówi kompilatorowi, gdzie szukać listy plików źródłowych. Należy również pamiętać, że opcję -sourcepath
można pominąć.
Oto jak zmieniła się struktura katalogów po uruchomieniu powyższej komendy.
.
├── build
│ ├── drivers
│ │ └── Driver.class
│ └── exceptions
│ └── MyException.class
└── src
├── attacks
├── drivers
│ └── Driver.java
└── exceptions
└── MyException.java
Jak można zaobserwować katalog build
zawiera teraz skompilowane pliki klas w poszczególnych pakietach.
I jeśli chcesz go uruchomić, zakładając na przykład, że Driver
ma metodę main
, następujące polecenie wykonuje program.
java -cp .:build:**/*.class drivers.Driver
Należy pamiętać, że separator plik :
(dwukropek) jest używana w systemie Unix, Windows zmień go na ;
(średnik).
Jeśli w "argfile" masz listę wszystkich plików do skompilowania, możesz uruchomić ['javac @ argfile'] (http://docs.oracle.com/javase/7/docs/technotes/tools/ windows/javac.html # commandlineargfile). Jeśli używasz innych bibliotek, musisz je dodać. – Alberto
Kiedy robię coś takiego jak edycja nazwy ścieżki klasy (w tym przypadku), gdzie powinienem to zrobić i jak? Słyszałem o tym, że robiono to w pliku manifestu, ale wiem, że można to zrobić również w ustawieniach systemu operacyjnego. – OKGimmeMoney
Możesz dodać zależność od classpath poprzez opcję '-classpath' jak:' javac -classpath \ examples; \ lib \ Banners.jar \ examples \ greetings \ Hi.java'. Zobacz http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html i http://docs.oracle.com/javase/7/docs/technotes/tools/windows/ classpath.html. – Alberto