为具有 jar 依赖项的包生成 javadoc
Generate javadoc for package with jar dependencies
如果包中的源文件依赖于某些外部库 (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
在这一点上我没有想法。关于如何做的任何指示?谢谢。
(当我google这个问题我只找到涉及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
如果包中的源文件依赖于某些外部库 (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
在这一点上我没有想法。关于如何做的任何指示?谢谢。
(当我google这个问题我只找到涉及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