如果包中的源文件依赖于某些外部库(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
仅在类路径上添加 jar
似乎也不起作用:
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;
使用您下载的 jar 中的类之一,例如,
import org.apache.commons.logging.impl.Log4JLogger;
并将类路径设置为 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
关于javadoc - 为具有 jar 依赖项的包生成 javadoc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55784090/