여기에 내 디렉토리 구조입니다 컴파일합니다. 폴더, 안쪽리눅스 여러 자바 파일을
/사용자/A /사용자/B /사용자/B
는, B는 파일 person.java가 C (동일한 파일이 단지 하나 개의 라인을 수정한다.
지금, 내 껍질에, 내/사용자/디렉토리에 메신저와 나는
javac */person.java
쉘이 다음과 같은 오류를 반환
person.java:14을하려고 : 중복 학급 : 사람
해결 방법이 있습니까?
여기에 내 디렉토리 구조입니다 컴파일합니다. 폴더, 안쪽리눅스 여러 자바 파일을
/사용자/A /사용자/B /사용자/B
는, B는 파일 person.java가 C (동일한 파일이 단지 하나 개의 라인을 수정한다.
지금, 내 껍질에, 내/사용자/디렉토리에 메신저와 나는
javac */person.java
쉘이 다음과 같은 오류를 반환
person.java:14을하려고 : 중복 학급 : 사람
해결 방법이 있습니까?
여기서 문제는 javac가 모든 것을 한 번에 컴파일하려고 시도한다는 것입니다. 자연스럽게 중복 클래스 정의가 생성됩니다.
이 될 것 해결하는 간단한 방법
find . -name '*.java' -exec javac {} \;
편집 :
또는 더 정확하게 할 수 find . -name 'person.java' -maxdepth 2 -exec javac {} \;
여기에서는 person.java 파일뿐만 아니라 .java로 끝나는 모든 파일을 컴파일합니다. 또한 하위 디렉토리의 한 수준으로 제한하지 않습니다. – PierreBdR
:
for f in */person.java; do
javac $file
done
첫 번째 줄은 모든 파일 person.java를 하위 디렉토리에서 찾는다. 두 번째 줄은 파일을 컴파일한다.
을 쉘에 넣으려면 위의 "for"루프를 입력하십시오. 그래서 별도의 .sh 파일을 만들어야하지 않습니까? – freshWoWer
예, 여기에 표시된대로 입력하거나 선택적으로 한 줄에 입력하십시오. for */person.java; do javac $ file; 끝난 – ephemient
클래스가 완전히 동일하고 패키지 정의가 맨 위에 있습니까? –