【发布时间】:2014-06-03 01:53:27
【问题描述】:
我尝试使用 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 file,其中包含我用来生成此错误的所有类(和库)。当你运行 ANT 脚本时,会产生类似上面的错误。文档看起来不错(甚至是 UML 图),但是,在我更大的项目(我首先得到错误的地方)中,一些生成错误的图不起作用
这些错误仅在以下情况下发生:
- TestClass 位于外部包中(包含该类的 jar 定义在类路径中。javac 完美运行)。
-
doSomething被覆盖 - 私有变量
myFail已设置。
如果myFail 被删除,或者doSomething 没有被覆盖(例如,它没有在Class1 或 Class2 中定义),或者TestClass 在同一个包中,则不会出现错误发生。
【问题讨论】:
-
如果可以的话,发布一些调试输出可能是个好主意。 Graphviz 究竟会抛出什么样的错误?您还可以发布点文件的内容。
-
我刚刚在 Windows 8.1 上进行了尝试,还使用了新安装的 GraphViz 2.38。我对与您类似的设置没有任何问题。不过,我必须承认我不是 Ant 用户。所以我在这个测试中使用了一个 Maven 插件。
-
@kriegaex 你能用我添加到我的帖子中的 ZIP 存档(使用 ANT)测试它吗?也许这是一个mac错误......我如何获得调试输出?我已经将 javadoc 设置为详细,但 javadoc 提供的信息似乎不相关。