2011-03-10 2 views
2

main 메소드에서 시작하여 tools.jar에서 필요한 프로그램을 고려하십시오. 이 경우 JMX 서비스에 연결하기위한 유틸리티 코드가 있습니다. 우리는 클래스 경로를 관리하기 위해 -cp를 사용하는 쉘 스크립트로 감싸는 선택의 여지가 있나? 차라리 MANIFEST.MF 클래스 경로를 사용합니다.tools.jar dependency

답변

1

http://java.sun.com/developer/Books/javaprogramming/JAR/basics/manifest.html

the URLs in the Class-Path header are given relative to the URL of the JAR file of the applet or application. 

에서 나는 당신이 당신의 클래스 패스에 tools.jar를 얻을 쉘 래퍼를 사용하는 방법에 대한 선택의 여지가 믿지 않는다. 외부 jar를 찾을 수 있도록 내부적으로 사용자 정의 클래스 로더를 작성하지 않는 한.

+1

아이디어는 클래스 경로 매니페스트의 사용을 포기하고 $ JAVA_HOME/lib/tools.jar를 포함하는 긴 -cp 인수를 빌드하는 것입니다. – bmargulies

+0

나는 당신의 생각과 의심을 확인하고 있다고 생각했습니다. 길이가 길어지면 -cp 인수가 원하는 것을 수행하는 유일한 좋은 방법 인 것 같습니다. 당신은 또한 다른 "java -cp <많은 클래스가 여기에> some.package.Main"을 생성 할 수있는 java -jar 실행 프로그램을 시스템 exec을 사용하여 만들 수 있습니다. 이렇게하면 새 프로세스를 생성하거나 포크하는 대신 스크립트를 건너 뛸 수 있습니다. –

+0

예, 물론입니다, 죄송합니다. – bmargulies

0

종속성 jar의 클래스를 통합하는 것이 옵션 인 경우, "Runnable JAR 파일"을 만드는 것이 좋습니다. 기본적으로 클래스를 추출하여 JAR에 자신의 클래스와 함께 배치합니다. 따라서 래핑 스크립트가 필요하지 않습니다.

Eclipse에서 프로젝트를 수행하려면 File ->Export ->Java ->Runnable JAR file을 선택하십시오. 이 옵션을 사용하려면 생성 된 JAR을 실제로 실행할 때 실행할 프로파일을 알기 위해 적어도 한 번 이상 메인 클래스를 실행해야합니다.