2008-09-26 6 views
1

여기에 내 디렉토리 구조입니다 컴파일합니다. 폴더, 안쪽리눅스 여러 자바 파일을

/사용자/A /사용자/B /사용자/B

는, B는 파일 person.java가 C (동일한 파일이 단지 하나 개의 라인을 수정한다.

지금, 내 껍질에, 내/사용자/디렉토리에 메신저와 나는

javac */person.java 

쉘이 다음과 같은 오류를 반환

person.java:14을하려고 : 중복 학급 : 사람

해결 방법이 있습니까?

+0

클래스가 완전히 동일하고 패키지 정의가 맨 위에 있습니까? –

답변

8

여기서 문제는 javac가 모든 것을 한 번에 컴파일하려고 시도한다는 것입니다. 자연스럽게 중복 클래스 정의가 생성됩니다.

이 될 것 해결하는 간단한 방법

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

편집 :

또는 더 정확하게 할 수 find . -name 'person.java' -maxdepth 2 -exec javac {} \;

+0

여기에서는 person.java 파일뿐만 아니라 .java로 끝나는 모든 파일을 컴파일합니다. 또한 하위 디렉토리의 한 수준으로 제한하지 않습니다. – PierreBdR

1
나는 작은 쉘 스크립트 갈 것

:

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

첫 번째 줄은 모든 파일 person.java를 하위 디렉토리에서 찾는다. 두 번째 줄은 파일을 컴파일한다.

+0

을 쉘에 넣으려면 위의 "for"루프를 입력하십시오. 그래서 별도의 .sh 파일을 만들어야하지 않습니까? – freshWoWer

+0

예, 여기에 표시된대로 입력하거나 선택적으로 한 줄에 입력하십시오. for */person.java; do javac $ file; 끝난 – ephemient