如果该软件包中的源文件依赖于某个外部库(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的。)
答案 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