我尝试使用 UmlGraphDoc,但是,每次运行 javadoc 命令时,都会收到一个奇怪的错误:
[javadoc] javadoc: warning - Errors running Graphviz on /private/tmp/test/docs/Class1.dot
[javadoc] Building Context view for class Fail
[javadoc] javadoc: warning - Errors running Graphviz on /private/tmp/test/docs/Class2.dot
我的代码如下所示:
import externalPackage.TestClass;
public abstract class Class1 {
private TestClass myFail;
public boolean doSomething(TestClass fail) {
return true;
}
}
public class Class2 extends Class1 {
@Override
public boolean doSomething(TestClass fail) {
fail.toString();
return false;
}
}
构建.xml
<project name="de.matt3o12.test" default="javadocs">
<path id="lib">
<fileset dir="lib">
<include name="**/*.jar" />
</fileset>
</path>
<target name="javadocs">
<javadoc verbose="true" destdir="docs" public="true">
<classpath>
<path refid="lib" />
<path path="${javac.classpath}" />
</classpath>
<fileset dir="src">
<filename name="**/*.java" />
</fileset>
<doclet name="org.umlgraph.doclet.UmlGraphDoc" path="lib/UMLGraph.jar">
<param name="-inferrel"/>
<param name="-inferdep"/>
<param name="-hide" value="java.*"/>
<param name="-collpackages" value="java.util.*"/>
<param name="-qualify"/>
<param name="-postfixpackage"/>
<param name="-nodefontsize" value="9"/>
<param name="-nodefontpackagesize" value="7"/>
<param name="-link" value="http://java.sun.com/j2se/1.5.0/docs/guide/javadoc/doclet/spec"/>
<param name="-link" value="http://java.sun.com/j2se/1.5/docs/api"/>
</doclet>
</javadoc>
</target>
</project>
我正在使用 Mac OS X Lion 和 Mavericks。我的小牛电脑上的点版本是dot - graphviz version 2.38.0
. 它是要下载的最新二进制包。
这是包含我用来生成此错误的所有类(和库)的zip 文件。当你运行 ANT 脚本时,会产生类似上面的错误。文档看起来不错(甚至是 UML 图),但是,在我更大的项目(我首先得到错误的地方)中,一些生成错误的图不起作用
这些错误仅在以下情况下发生:
- TestClass 在一个外部包中(包含该类的 jar 在类路径中定义。javac 完美运行)。
doSomething
被覆盖- 私有变量
myFail
已设置。
如果myFail
被删除,或者doSomething
没有被覆盖(例如,它没有在 Class1或Class2 中定义),或者 TestClass 在同一个包中,则不会发生错误。