Sun-Java-6 tools.jar の検索時にクラスパス/java.home が正しくない問題が発生する

Sun-Java-6 tools.jar の検索時にクラスパス/java.home が正しくない問題が発生する

sun-java6-jdkUbuntu 11.04 サーバー ディストリビューションで実行されているプロジェクト用に、およびsun-java6-jre(およびおそらくフォントなどの他の関連 java6 パッケージ) をインストールしました。私たちのプロジェクトは、実行中の実行可能ファイル内からプログラムによって Javadoc を呼び出します。これを行うには、当然、JDK ディストリビューションの一部であるが JRE ディストリビューションの一部ではない tools.jar ファイルの場所を知る必要があります。パッケージは にインストールされており、さまざま/usr/lib/jvm/java-6-sun-1.6.0.26/な標準バイナリを提供する 2 つの領域 (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

まあ、これはハックですが、サードパーティの jar ファイルを拡張機能としてインストールするかのように、tools.jarファイルをディレクトリにコピーすることになります。これは不自然な動作のようで、オプション (試してみましたが失敗しました) または環境変数 (これも試してみましたが失敗しました) を介してコマンド ラインで何かを行う必要があります。jre/lib/ext-cp

関連情報