2012-01-09 2 views
2

독립 실행 형 Java 프로젝트가 있습니다. 나는 maven을 새로 설치했다. 이제 명령 프롬프트를 통해 target \ classes 폴더로 들어가서 classpath에 필요한 모든 파일을 설정합니다. 이제 메인 클래스를 실행합니다. 결과가 표시됩니다.JAR에 대한 클래스 경로 설정

이제 명령 프롬프트를 통해 대상 폴더로 이동하고 jar 파일을 실행하려고합니다 (jar 파일에는 기본 클래스가 정의 된 매니페스트 파일이 있음).

Java -cp %CLASSPATH% -jar Destination-01.19-SNAPSHOT.jar 

이제 아래 예외가 발생합니다. 위의 명령문에서 classpath 속성을 제거했지만 여전히 동일한 예외가 발생합니다. classpath 변수에 필수 클래스가 설정되어 있기 때문에 -jar 속성을 사용하지 않고 main 클래스를 실행할 수있었습니다. 스레드 "메인 스레드"java.lang.NoClassDefFoundError가에

예외 : 조직/아파치/공동 몽스/로깅/LogFactory

+1

당신이 매니페스트 파일에 클래스 패스를 넣어야 할 것 같아요 –

+0

[이 너무] 확인 (http://stackoverflow.com/questions/1510071/maven-how-can-i-add-an-arbitrary-classpath- 엔트리 - 투 - 항아리) –

+0

아니요. 'echo % CLASSPATH %'를 출력하고 LogFactory 클래스를 포함하는 ** jar ** 파일이 있는지보십시오. – OscarRyz

답변

4

이가 유일한 메커니즘입니다 프로그램의 클래스 경로를 설정합니다.

매니페스트의 클래스 - 경로 줄에 필요한 모든 병 (로컬 파일 시스템에서 찾을 필요가 있음을 의미 함)이 필요하거나 필요한 병을 찾을 수있는 사용자 정의 클래스 로더를 만들어야합니다 .

4

그것은 -cp 보인다 호환되지 않는 -jar 있습니다. 당신은 자동으로 클래스 경로를 업데이트 받는다는하려면 http://docs.oracle.com/javase/tutorial/deployment/jar/downman.html

를 참조 매니페스트

의 클래스 경로를 둘 필요가 참조하십시오 : - 당신이 -jar를 사용하는 경우

http://maven.apache.org/shared/maven-archiver/examples/classpath.html

+0

감사합니다 피터! 나는 에 하나의 종속성을 설정했습니다. 그러나 이것은 매니페스트의 classpath에 추가되지 않습니다. –

관련 문제