2010-03-01 7 views

Répondre

24

Eh bien, cela semble assez évident, donc je manque peut-être quelque chose

javac *.java 

(avec des références de bibliothèque appropriée, etc.)

Ou peut-être:

javac -d bin *.java 

à javac créer la bonne structure de répertoire pour la sortie.

Étiez-vous à la recherche de quelque chose de plus sophistiqué? Si oui, pourriez-vous donner plus de détails (et aussi sur quelle plate-forme vous êtes)?

+0

merci, ça marche! – alex

+0

qu'en est-il de tous les fichiers java dans tous les répertoires sub et decending? – Tom

+0

@Tom: Trouver cela dépend du système d'exploitation. C'est un peu facile sur Unix, en utilisant find. Plus dur sur Windows. –

3

Voici un fragment de code que j'utiliser pour construire un projet complet où, comme d'habitude, les fichiers source sont dans une hiérarchie profondément imbriquées et il y a beaucoup de fichiers .jar qui doivent aller dans le chemin de classe (nécessite des utilitaires UNIX):

CLASSPATH= 
for x in $(find | grep jar$); do CLASSPATH="$CLASSPATH:$x"; done 
SRC=$(find | grep java$) 
javac -cp "$CLASSPATH" $SRC 
9

Encore une autre façon à l'aide « trouver » sous UNIX est décrit ici:

http://stas-blogspot.blogspot.com/2010/01/compile-recursively-with-javac.html

les deux commandes suivantes compileront tous les fichiers .java contenus dans le répertoire ./src et ses sous répertoires:

find ./src -name *.java > sources_list.txt 
javac -classpath "${CLASSPATH}" @sources_list.txt 

En premier lieu, find génère sources_list.txt, un fichier qui contient les chemins d'accès aux fichiers source Java. Ensuite, javac compile toutes ces sources en utilisant la syntaxe @sources_list.txt.

+0

Envisagez d'améliorer votre publication car votre réponse est essentiellement un lien. Voir: [Les réponses qui contiennent juste des liens ailleurs sont-elles vraiment de "bonnes réponses"?] (Http://meta.stackexchange.com/q/8231/156620) et [Pourquoi la liaison est-elle mauvaise?] (Http: //meta.stackexchange .com/q/7515/156620) –

+2

Belle solution. Vous ignorez le fichier temporaire en utilisant/dev/stdin cependant. c'est à dire. 'find ./src -name * .java | javac -classpath "$ {CLASSPATH}" @/dev/stdin' – Dunes