Wie werden alle Dateien im Verzeichnis in * .class-Dateien kompiliert?Erstellen eines Java-Pakets (Javac für alle Dateien)
Antwort
Nun scheint dies ziemlich offensichtlich, so kann ich etwas
javac *.java
(mit entsprechender Bibliothek Referenzen, usw.)
Oder vielleicht fehlen:
javac -d bin *.java
zu javac erstellen die richtige Verzeichnisstruktur für die Ausgabe.
Sie suchen etwas anspruchsvoller? Wenn ja, könnten Sie mehr Details angeben (und auch auf welcher Plattform Sie arbeiten)?
Hier ist ein Code-Fragment ist, das ich benutze ein ganzes Projekt, bei dem, wie üblich zu bauen, Quelldateien in einer tief verschachtelten Hierarchie sind und es gibt viele .jar-Dateien, die in den Classpath gehen muss (erfordert UNIX-Dienstprogramme):
CLASSPATH=
for x in $(find | grep jar$); do CLASSPATH="$CLASSPATH:$x"; done
SRC=$(find | grep java$)
javac -cp "$CLASSPATH" $SRC
Noch ein anderer Weg „finden“ auf UNIX ist hier beschrieben:
http://stas-blogspot.blogspot.com/2010/01/compile-recursively-with-javac.html
die folgenden zwei Befehle werden alle .java-Dateien im Verzeichnis ./src
und seine Unter enthalten kompilieren Verzeichnisse:
find ./src -name *.java > sources_list.txt
javac -classpath "${CLASSPATH}" @sources_list.txt
Zuerst find
erzeugt sources_list.txt
, eine Datei, die die Pfade zu den Java-Quelldateien enthält. Als nächstes kompiliert javac
alle diese Quellen mit der Syntax @sources_list.txt
.
Erwägen Sie, Ihren Post zu verbessern, da Ihre Antwort im Wesentlichen ein Link ist. Siehe: [Sind Antworten, die nur Links enthalten, wirklich "gute Antworten"?] (Http://meta.stackexchange.com/q/8231/156620) und [Warum wird verlinkt?] (Http: //meta.stackexchange .com/q/7515/156620) –
Schöne Lösung. Sie überspringen die temporäre Datei jedoch mit/dev/stdin. dh. 'finde ./src -name * .java | javac -classpath "$ {CLASSPATH}" @/dev/stdin' – Dunes
1) siehe Makefile (oder Ant oder Maven oder ....) 2) Nein – KevinDTimm