как вы создаете javadoc для пакета, если исходный файл в этом пакете зависит от какой-то внешней библиотеки (jar)?
Вот среда и генерация javadoc для пакета без зависимостей библиотеки:
mkdir -p ~/doctest/com/foo/bar/baz
cd ~/doctest
cat > com/foo/bar/baz/Glorp.java << EOF
package com.foo.bar.baz;
public class Glorp {
/**
* Here's some javadoc.
*
* @return A magic number
*/
public static void foo() { return 42; }
}
EOF
javadoc -d doc com.foo.bar.baz
Теперь предположим, что это зависит, скажем, от commons-logging-1.2.jar, как вы генерируете javadoc? Вы не можете просто запустить приведенную выше команду, javadoc будет жаловаться, что понятия не имеет, что такое Logger.
wget http://ftp.download-by.net/apache//commons/logging/binaries/commons-logging-1.2-bin.tar.gz
mkdir jars
tar xf commons-logging-1.2-bin.tar.gz --one-top-level=jars
sed -i 's/package.*/&\nimport org.apache.log4j.Logger;/' com/foo/bar/baz/Glorp.java
javadoc -d doc com.foo.bar.baz
Loading source files for package com.foo.bar.baz...
Constructing Javadoc information...
./com/foo/bar/baz/Glorp.java:2: error: package org.apache.log4j does not exist
import org.apache.log4j.Logger;
^
1 error
Простое добавление jars в путь к классам тоже не работает:
javadoc -classpath jars/ -d doc com.foo.bar.baz
Loading source files for package com.foo.bar.baz...
javadoc: error - No source files for package com.foo.bar.baz
1 error
На данный момент у меня нет идей. Любые указатели на то, как это сделать? Спасибо.
(Когда я гуглю эту проблему, я нахожу ответы только на Maven, Gradle или другие подобные программы, но я не хочу их использовать, этот вопрос касается javadoc, а не инструментов сборки или IDE.)





Можете ли вы скомпилировать свой код? Параметры пути к классам Javadoc должны быть такими же, как и для компиляции.
Глядя на загруженный файл jar, похоже, что в нем нет классов log4j:
unzip -l commons-logging-1.2.jar | grep log4j
выходит пустой.
Когда я заменю
import org.apache.log4j.Logger;
с одним из классов в загруженной банке, например,
import org.apache.commons.logging.impl.Log4JLogger;
и установите classpath как для пути jars, так и для текущего каталога (чтобы он нашел ваш исходный код), он работает:
javac -cp .:jars/commons-logging-1.2/commons-logging-1.2.jar com/foo/bar/baz/Glorp.java
javadoc -cp .:jars/commons-logging-1.2/commons-logging-1.2.jar -d doc com.foo.bar.baz
Я не пытался его компилировать, так как это был просто какой-то фиктивный код, и я был уверен, что он правильный, но, видимо, это не так. В любом случае, это помогло, большое спасибо!