2011-08-11 4 views
2

콘솔 응용 프로그램을위한 작은 인터페이스를 만들고 있으므로 콘솔 응용 프로그램을 실행하고 명령 줄을 통해 명령을 실행하고 있습니다.Java Web Start를 통해 외부 JAR에 클래스 경로를 제공하는 방법

내 문제는 내가 실행중인 JAR에 JAR 라이브러리에 대한 경로를 제공해야한다는 것이다. 그러나 나는이 정보를 정확하게 전달하는 방법을 모른다. JNLP File Syntax에있는 정보에 따르면 모든 JAR 파일을 JNLP 파일의 JAR 경로에 추가해야합니다.

이 파일은 다음과 같습니다

<resources> 
    <j2se version="1.5+"/> 
    <jar href="uToolGUI.jar" main="true"/> 
    <jar href="uTool.jar"/> 
    <jar href="jpcap.jar"/> 
</resources> 

나는 현재 실행하고있어 라인이있다 : 그래서

java.exe -cp lib\jpcap.jar;. -jar D:\jarCreateLib\uTool.jar gen 

나는 질문으로 귀결 생각 - 내가 원하는 참조 어떻게 라이브러리를 사용하면 Web Start에서 그렇게 할 수 있습니다.

Eclipse를 통해 실행될 때 매력처럼 작동합니다. java -jar...을 실행해야한다면 -Djnlp.java.library.path=lib에 추가해야합니다. 그러나 Java Web Start를 실행할 때마다 별다른 차이가 없습니다.

미리 답변 해 주셔서 감사합니다.

+0

'manifest'는 무엇을 말하고 있습니까? – trashgod

+0

대기열이 아닌 다른 행과 파일의 서명이 있습니다. 메인 클래스 : uTool.View.MainViewFrame –

답변

2

java -jar … 명령은 -cp 옵션에 지정된 경로가 아니고 매니페스트에있는 Class-Path을 사용합니다. here 제안, 당신은 이와 같은 매니페스트 항목이 필요합니다 JNLP File Syntax에서 언급 한 바와 같이

 
Class-Path: lib/uToolGUI.jar lib/uTool.jar lib/jpcap.jar 

, JNLP 파일의 main-class 속성이 생략 될 수있는 JNLP 파일에 지정된 첫 번째 JAR 파일이에서 발견 할 수있는 경우 Main-Class JAR 파일의 매니페스트 항목 코드베이스 동안 lib 디렉토리에 하나, jarCreateLib의 다른 &에 명령 행 호출 포인트 -

1

의 JNLP 조각은 항아리가 같은 (이름) 디렉토리에 있다고 가정합니다.

JaNeLA으로 JNLP를 확인하시는 것이 좋습니다. JNLP로 선언 된 자원은 지정된 코드베이스에 상대적으로 사용할 수 있는지 검사하는 것 중 하나입니다.

+0

+1 경로 불일치가 아마도 중요합니다. 부수적 인 JAR 파일을 또는 매니페스트의'Class-Path' 항목으로 지정하는 것이 적절합니까? – trashgod

+1

@trashgod 예. '클래스 경로 (Class-Path) '는 애플릿과 JWS AFAIR의 경우 1.5보다 새로운 것이지만 둘 다 작동합니다. JaNeLA는 JNLP 정보 만 사용하므로 매니페스트에 지정된 모든 Jar를 놓치게됩니다. OTOH는'resources' 섹션에서 Jars를 선언 할 때 장점이 있습니다. 다운로드는 열망/게으름, 부품 사양, 아카이브를 확장으로 분리하는 기능 등으로 제어 할 수 있습니다. –

관련 문제