Java 以编程方式运行标准Doclet
从理论上讲,应该可以从Java程序本身运行javadoc生成过程(如下所述)。我从中获取程序,并对其进行了轻微更改,如下图所示。然而,当我从类的main方法调用doTest方法时,我总是从execute函数得到返回代码“1”,这导致了错误Java 以编程方式运行标准Doclet,java,javadoc,doclet,Java,Javadoc,Doclet,从理论上讲,应该可以从Java程序本身运行javadoc生成过程(如下所述)。我从中获取程序,并对其进行了轻微更改,如下图所示。然而,当我从类的main方法调用doTest方法时,我总是从execute函数得到返回代码“1”,这导致了错误 static void doTest() { ByteArrayOutputStream redirectedOutput = new ByteArrayOutputStream(); PrintStream originalOutput =
static void doTest() {
ByteArrayOutputStream redirectedOutput = new ByteArrayOutputStream();
PrintStream originalOutput = System.out;
// redirect System.out to a buffer
System.setOut(new PrintStream(redirectedOutput));
PrintWriter sink = new PrintWriter(new ByteArrayOutputStream());
// execute javadoc
int result = com.sun.tools.javadoc.Main
.execute(
"javadoc", sink, sink, sink,
"com.sun.tools.doclets.standard.Standard",
new String[] {
"-sourcepath",
"\"C:\\Program Files (x86)\\Java\\jdk1.7.0_51\\src\\\"",
"java.util" });
// test whether javadoc did any output to System.out
if (redirectedOutput.toByteArray().length > 0) {
originalOutput
.println("Test failed; here's what javadoc wrote on its standard output:");
originalOutput.println(redirectedOutput.toString());
throw new Error("javadoc output wasn\'t properly redirected");
} else if (result != 0) {
throw new Error("javadoc run failed " + result);
} else {
originalOutput.println("OK, good");
}
}
我可以使用以下行生成javadoc:
C:\Program Files (x86)\Java\jdk1.7.0_51\bin>javadoc -sourcepath ..\src\ -d "C:\Users\leo\Eigene Dateien\javadoc" java.util
我的环境是Windows和JDK 1.7.0_51。我的执行方式不同,请参见我的问题- 我想说(没有测试),您的参数应该是:
String[] params = new String[] {
"-doclet", "com.sun.tools.doclets.standard.Standard",
"-sourcepath", "C:\\Program Files (x86)\\Java\\jdk1.7.0_51\\src\\",
"java.util"
};
com.sun.tools.javadoc.Main.execute(params);
怎么稍微改变一下?为什么?它以前不起作用。我添加了sourcepath参数和一个真正的包。