Sun-Java-6 tools.jar을 찾을 때 잘못된 classpath/java.home 문제

Sun-Java-6 tools.jar을 찾을 때 잘못된 classpath/java.home 문제

Ubuntu 11.04 서버 배포판에서 실행되는 프로젝트를 위해 및 글꼴과 같은 기타 관련 java6 패키지를 sun-java6-jdk설치 했습니다 . sun-java6-jre우리 프로젝트는 실행 중인 실행 파일 내에서 프로그래밍 방식으로 Javadoc을 호출합니다. 그렇게 하려면 JDK 배포판의 일부이지만 JRE 배포판은 아닌 tools.jar 파일의 위치를 ​​알아야 합니다. 패키지가 설치되었으며 /usr/lib/jvm/java-6-sun-1.6.0.26/두 영역(JDK/JRE) 아래에 다양한 표준 바이너리를 제공하는 bin 및 기타 디렉터리가 있습니다.

(Java 바이너리를 통해) Java 프로그램을 실행할 때마다 내부 java.home 변수는 제공된 JAVA_HOME 환경 변수를 덮어쓰는 것처럼 보입니다. 따라서 우리는 바이너리가 바이너리 경로에서 java.home을 파생한다는 결론을 내렸습니다. jdk 아래의 Java 바이너리는 실제로 jre 버전에 대한 링크입니다. 따라서 어떤 것을 '실행'하더라도 항상 jre 버전을 가져오므로 java.home 디렉토리는 로 정의됩니다 /usr/lib/jvm/java-6-sun-1.6.0.26/jre.

따라서 실행 중인 실행 파일은 tools.jar파일을 찾을 수 없는 것처럼 보이며 옵션을 전달해도 -cp /usr/lib/jvm/java-6-sun-1.6.0.26/jdk/lib/tools.jar도움이 되지 않습니다. tools.jar우리는 메소드를 올바르게 호출할 수 있도록 파일 에 올바르게 액세스할 수 있는 방법을 누군가가 밝히는 데 도움을 줄 수 있기를 바랍니다 com.sun.tools.javadoc.Main.execute.

실행 예:

java -cp /usr/lib/jvm/java-6-sun/lib/tools.jar -jar comtor.jar -sourcepath .

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/tools/javadoc/Main
    at comtor.Comtor.main(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com.sun.tools.javadoc.Main
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    ... 1 more

답변1

글쎄요, 해킹이긴 하지만, 마치 제3자 jar 파일을 확장으로 설치하는 것처럼 tools.jar파일을 디렉토리에 복사하게 되었습니다 . jre/lib/ext이는 부자연스러운 작업처럼 보이며 명령줄에서 옵션 -cp(시도했지만 실패)이나 환경 변수(시도했지만 실패)를 통해 작업을 수행해야 하는 것 같습니다.

관련 정보