Генерация javadoc для пакета с зависимостями jar - PullRequest
1 голос
/ 21 апреля 2019

как вы генерируете 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

На данный момент у меня нет идей.Любые указатели о том, как это сделать?Спасибо.

(Когда я Google для этой проблемы, я нахожу только ответы, связанные с Maven, Gradle или другими такими программами, но я не хочу их использовать, этот вопрос о javadoc, а не о средствах сборки или IDE.)

1 Ответ

1 голос
/ 21 апреля 2019

Можете ли вы скомпилировать свой код? Настройки Javadoc classpath должны быть такими же, как и для компиляции.

Глядя на загруженный вами 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
...