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

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/и есть bin и другие каталоги в двух областях (JDK/JRE), которые предоставляют различные стандартные двоичные файлы.

Всякий раз, когда мы выполняем программу 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

решение1

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

Связанный контент