문제

JAR 파일을 실행하려고 노력했습니다. Test.jar- UNIX 시스템에서 Sybase JConn3.jar를 사용합니다.

다음과 같은 Manifest.mf 파일을 만들었습니다.

Class-Path: $SYBASE/jConnect-6_0/classes/jconn3.jar commons-net-1.3.0.jar

이것은 classNotFoundError를 제공합니다. $ sybase는 /opt /sybase13을 가리키는 시스템 변수입니다. 나는 또한 다음을 시도했다.

Class-Path: /opt/sybase13/jConnect-6_0/classes/jconn3.jar commons-net-1.3.0.jar

그리고

Class-Path: opt/sybase13/jConnect-6_0/classes/jconn3.jar commons-net-1.3.0.jar

그러나 $ sybase/jconnect-6_0/classes에서 jconn3.jar 파일을 복사하면 test.jar와 동일한 디렉토리로 복사하고 다음과 같이 읽으려면 MANIFEST.MF를 업데이트하십시오.

Class-Path: jconn3.jar commons-net-1.3.0.jar

응용 프로그램은 예상대로 실행됩니다.

이제 JCONN33.jar 파일 작업을 로컬로 복사하여 작업을 확인할 수있었습니다. my manifest.mf 파일에는 메인 클래스로가는 경로가 포함되어 있으므로 여기에는 문제가되지 않습니다.

문제가 무엇이라고 생각하십니까? 나는 지금이 일을 너무 오랫동안보고 있었다. 감사!

도움이 되었습니까?

해결책

클래스 경로의 항목은 그들이 내장 된 항아리와 관련이 있거나 (작동중인) URL입니다. 절대 경로를 작동 시키려면 URL로 변환해야합니다.

file:/opt/sybase13/...

변수를 사용하는 메커니즘이 없습니다.

Jar 사양이 명확하게 말하지는 않지만 절대적으로 file: 체계 URL은 클래스 경로 속성에서 작동합니다.

다른 팁

환경 변수는 클래스 로더 AFAIK에 의해 읽지 않습니다. 그러나 구성 스크립트에 항아리를 추가 할 수 있습니다.

사양에 대한 accoding 항목은 항아리의 친척입니다.

클래스 경로 :

이 속성의 값은이 응용 프로그램 또는 확장자가 필요로하는 확장자 또는 라이브러리의 상대 URL을 지정합니다. URL은 하나 이상의 공간으로 분리됩니다. 응용 프로그램 또는 확장 클래스 로더는이 속성의 값을 사용하여 내부 검색 경로를 구성합니다.

http://java.sun.com/j2se/1.5.0/docs/guide/jar/jar.html #manifest 사양

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top