Sun-Java-6 Неправильные проблемы classpath / java.home при поиске tools.jar

Я установил sun-java6-jdk и sun-java6-jre (и, вероятно, другие связанные пакеты java6, такие как шрифты) для проекта, работающего на дистрибутиве сервера Ubuntu 11.04. Наш проект программно вызывает Javadoc из нашего исполняемого файла. Для этого нам, очевидно, нужно знать местоположение файла tools.jar, который является частью дистрибутива JDK, но не дистрибутива JRE. Пакеты были установлены в /usr/lib/jvm/java-6-sun-1.6.0.26/, и в двух областях (JDK / JRE) есть bin и другие каталоги, которые предоставляют различные стандартные двоичные файлы.

Всякий раз, когда мы выполняем программу Java (через двоичный файл Java), внутренняя переменная java.home, кажется, перезаписывает любую предоставленную переменную среды JAVA_HOME. Мы пришли к выводу, что двоичный файл, таким образом, получает свой java.home из пути двоичного файла. Бинарный файл Java под JDK действительно является ссылкой на версию 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
2
задан 21 July 2012 в 10:18

1 ответ

Ну, это взлом, но мы закончили копировать файл tools.jar в каталог jre/lib/ext, как если бы мы устанавливали сторонний jar-файл в качестве расширения. Это кажется неестественным действием, и мы должны что-то делать в командной строке с помощью опции -cp (пробовал, но не получилось) или с помощью переменной окружения (пробовал тоже, и тоже не получалось).

0
ответ дан 21 July 2012 в 10:18

Другие вопросы по тегам:

Похожие вопросы: