2012-04-19 4 views
2

나는 실행 가능한 jar 파일과 관련된 이상한 문제를 찾아 내려고 노력하고있다. xyz.jar은 manifest 파일 /에 classpath가 있고 abc.jar 라이브러리에 의존한다.java manifest classpath 대 -classpath

불행히도 xyz.jar의 매니페스트 클래스 경로가 잘못되었습니다. 재난을 막기 위해 java -jar 대신 java -classpath path/abc.jar : etc를 사용하도록 실행 명령을 업데이트하고 있습니다.

abc.jar이 아닌 xyz.jar malfuntions가 문제가됩니다. classpath. abc.jar가 제거되면 프로그램이 올바르게 실행되고 예외가 발생하지 않습니다. 왜? xyz.jar은 다른 곳에서 abc.jar를 가져와야합니다. xyz.jar은 abc.jar의 메소드를 호출합니다.

-classpath는 $ CLASSPATH 설정보다 우선합니다. 가능한 경우에도 - 클래스 경로를 사용하는 경우에도 여전히 매니페스트 클래스 경로를 살펴볼 수 있습니까?

답변

6

-jar를 지정하면 매니페스트의 클래스 경로 만 사용됩니다. 다른 모든 것은 무시됩니다. 클래스 경로를 다시 지정해야 할 경우 -jar을 사용하지 마십시오.

-1

jar 매니페스트 파일의 Class-Path 속성은 해당 jar 내의 클래스 종속성을 선언하는 데 사용되므로 기본 클래스 경로와 독립적입니다. java 명령과 함께 -cp를 사용하면 ClassPath 환경 변수가 바뀌는 것은 사실이지만 각 jar의 개별 Class-Path에는 영향을 미치지 않아야합니다.

+0

맞지 않습니다. -jar를 사용하면 다른 모든 classpath가 무시됩니다. – EJP