2010-01-04 3 views
2

내가 잘못하면 나를 교정하십시오.실행중인 java [-options] -jar jarfile (명시 적 클래스 이름 없음)

명시 적 클래스 이름없이 java [-options] -jar jarfile을 실행하는 경우 public static void main(String[] args) 메서드가 포함 된 jar 파일 내에 하나의 클래스가 있으면 해당 메서드가 자동으로 호출됩니다. 권리?

main 방법을 포함하는 여러 클래스가있는 경우 어떻게됩니까?

+0

감사합니다 모두! 나는 그걸 알아야한다고 생각합니다. – Yaneeve

답변

6

MANIFEST 파일에 정의 된 Main-Class를 사용하여 실행할 클래스 메소드가 포함 된 클래스를 결정합니다.

http://java.sun.com/docs/books/tutorial/deployment/jar/appman.html

+1

참고 : Ant를 사용하여 건물을 관리하는 경우 Ant를 사용하여 MANIFEST 파일을 빌드 할 수 있습니다. 그 파일을 수동으로 최신 상태로 유지하지 않아도되는 것이 매우 편리하다는 것을 알았습니다. –

4

실행할 클래스는 Manifest metadata에서 가져옵니다.

메인 클래스 :

이 속성의 값은 런처 가 시작시로드의 주요 응용 프로그램 클래스의 상대 경로 정의합니다. 값은 .class 확장자 을 클래스 이름에 추가해서는 안됩니다.

+0

위대한 대답, 죄송합니다 나는 받아 들인 대답으로 하나 이상을 선택할 수 없습니다. – Yaneeve

2

이 JAR는 "메인 클래스"항목과 manifest file를 포함해야합니다 참조하십시오.

편집 : 문서가 올바르지 않았던 점을 기억합니다. "Main-Class"가 작동하지 않으면 "Main-class"(소문자 "클래스")를 시도하십시오.

2

실행되는 클래스는 .jar 안에있는 MANIFEST 파일에 의해 결정됩니다. 특히 Main-Class 속성. 위 매니페스트 말했다없이 항아리에 자바 -jar을 사용하려고하면

2

, 당신은 다음과 같은 결과를 얻을 수 있습니다 :

Failed to load Main-Class manifest attribute from <jarname>.jar