2008-09-26 9 views
1

Voici ma structure de répertoire.Linux pour compiler plusieurs fichiers Java

/user/a /utilisateur/b /user/b

l'intérieur du dossier a, b, c il y a un person.java de fichier (il est le même fichier, juste une modification d'une ligne.

maintenant, sur ma coquille, im sur mon/user/et je tente de faire

javac */person.java 

la coquille renvoie l'erreur suivante,

person.java:14 : doublon classe: personne

Y a-t-il quelque chose à résoudre?

+0

Les classes sont-elles exactement les mêmes, avec la même définition de paquetage en haut? –

Répondre

8

Je pense que le problème ici pourrait être que javac essaie de tout compiler en une seule fois, ce qui entraîne naturellement des définitions de classe dupliquées.

Une façon simple de résoudre ce serait

find . -name '*.java' -exec javac {} \;

Edit:

Ou pour être plus précis find . -name 'person.java' -maxdepth 2 -exec javac {} \;

+0

Ici, vous compilez tous les fichiers se terminant par .java, pas seulement les fichiers person.java. De même, vous ne vous limitez pas à un niveau de sous-répertoire. – PierreBdR

1

Je pencherais pour le petit script shell:

for f in */person.java; do 
    javac $file 
done 

Première ligne trouver tous les fichiers person.java dans un sous-répertoire, la deuxième ligne compiler le fichier.

+0

dans un shell, y at-il un puits pour taper la boucle ci-dessus pour "dans" la console, alors je n'ai pas besoin de créer un fichier .sh distinct? – freshWoWer

+0

Oui, il suffit de taper comme vous le voyez ici, ou éventuellement de tout mettre sur une ligne: pour f dans */person.java; fais le fichier javac $; terminé – ephemient

Questions connexes