生成具有jar依赖项的软件包的Javadoc

时间:2019-04-21 15:29:27

标签: javadoc

如果该软件包中的源文件依赖于某个外部库(jar),那么如何为该软件包生成javadoc?

这是没有库依赖项的软件包的环境和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的。)

1 个答案:

答案 0 :(得分:1)

您可以编译代码吗? Javadoc的类路径设置应与编译时相同。

查看您下载的jar文件,它似乎没有log4j类:

unzip -l commons-logging-1.2.jar | grep log4j

显示为空。

当我更换

import org.apache.log4j.Logger;

使用您下载的jar中的一个类,例如

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