0

我尝试使用 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没有被覆盖(例如,它没有在 Class1Class2 中定义),或者 TestClass 在同一个包中,则不会发生错误。

4

1 回答 1

2

我能够重现该问题。它与 Mac 无关,而是由 UMLGraph 源代码中的单个空格字符引起的细微错误。它已经在 Git master(开发版)中修复。我通过将UMLGraph 存储库与之前的版本(标签 R5_6_6)进行克隆和二等分来发现。我通过使用 Maven 构建库并使用您的 Ant 项目运行每个二等分的构建来做到这一点。最后我发现提交@8d77597解决了这个问题。

底线:只需从 GitHub 克隆存储库并构建快照版本,您的问题就应该消失了。我将在此处打开一个链接到此页面的问题,并代表您要求发布错误修复。

更新:这是要求发布新的错误修复版本的票。为你交叉手指...

于 2014-06-02T17:53:27.513 回答