1

here is my directory structure.

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

inside folder a,b,c there is a file person.java (it is the Same file, just a one line modification.

now, on my shell, im on my /user/ directory and i try to do

   javac */person.java

the shell returns the following error,

person.java:14: duplicate class: person

Is there anything to resolve this?

Chris Upchurch
  • 15,297
  • 6
  • 51
  • 66
freshWoWer
  • 61,969
  • 10
  • 36
  • 35

2 Answers2

8

I think the problem here might be, that javac tries to compile everything in one go, which naturally results in duplicated class definitions.

A simple way to resolve this would be

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

Edit:

Or to be more precise find . -name 'person.java' -maxdepth 2 -exec javac {} \;

Horst Gutmann
  • 10,910
  • 2
  • 28
  • 31
  • Here you compile all the file ending in .java, not only the person.java files. Also you don't restrict to one level of subdirectory. – PierreBdR Sep 26 '08 at 08:59
1

I would go for the small shell script:

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

First line find all the files person.java in a sub-directory, second line compile the file.

PierreBdR
  • 42,120
  • 10
  • 46
  • 62
  • in a shell, is there a well to type the above for loop "in" the console, so i dont have to create a separate .sh file? – freshWoWer Sep 27 '08 at 19:32
  • Yes, just type it as you see it here, or optionally put it all on one line: for f in */person.java; do javac $file; done – ephemient Oct 01 '08 at 19:28