【问题标题】:Javadoc tag @link with Doxygen : unable to resolve link带有 Doxygen 的 Javadoc 标记 @link:无法解析链接
【发布时间】:2013-08-04 00:14:21
【问题描述】:

我使用 Javadoc 进行了文档记录,并且非常感谢与 Eclipse 的集成,但我想使用 Doxygen 来添加图表。

我在几个简短的描述中使用标签 {link foo} 来链接到标准 Java 类和我自己的类。

这是一个 SSCCE:

package org.foo.myproject;

import javax.swing.JList;

/**
 * This is a Javadoc line {@link JList}
 * 
 * @author theauthor
 * @version 1.0.0
 */
public class JavadocLinkFailedDemo {
}

我在使用 Doxygen (1.8.4) 时收到以下错误:Warning: unable to resolve link to JList for \link command(我使用由 doxygen.exe 生成的 doxyfile 模板,针对 .java 源和特定输入/输出目录进行了编辑)

这与question 有类似的问题,但主题作者的解决方案对我不起作用。

提前感谢您的帮助。

编辑1: 我只是尝试使用 doxygen 生成 Java API 以获取相应的标记文件。然后,我将此文件与此演示项目一起使用,其中我添加了一个构造函数,使用一个参数作为 JList => 仅针对此参数解析链接,从不使用链接命令。

编辑2: 我终于成功地保留了这种签名:{@link ...}。 对于我的示例,如果满足以下条件,则 JList 被解析:
- 编写类文件的完全限定名
- 用doxygen生成jdk的文档生成一个标签文件,并在你的项目中使用这个标签

最后的示例代码是:

package org.foo.myproject;

import javax.swing.JList;

/**
 * This is a Javadoc line with {@link javax.swing.JList}
 * 
 * @author theauthor
 * @version 1.0.0
 */
public class JavadocLinkFailedDemo {
    /**
     * This is a Javadoc line of the constructor with {@link javax.swing.JList}
     * 
     * @param aList
     *            The list
     */
    public JavadocLinkFailedDemo(JList aList) {
    }
}

最终结果:

但是,构建 .chm 帮助文件几乎是不可能的,因为完成这项任务需要一段时间,而且您会得到一个非常大的文件。但这是另一个问题......

【问题讨论】:

    标签: hyperlink javadoc doxygen


    【解决方案1】:

    我还没有尝试过,但我相信您需要的是@link 之前的转义字符。这应该看起来像 \@link@@link,但我更喜欢 \@link

    现在我相信 doxygen 应该能够正确处理您的 javadoc 注释,但是我不确定这是否适用于 JavaDoc,或者 JavaDoc 现在是否在抱怨。此外,在你的 doxygen 文档中它可能看起来很奇怪,因为应该显示一个 @link JList}, ...我想这也不是你想要的。

    【讨论】:

    • 对不起,我误读了这个topic。它也对我有用,但如果我想修复 Javadoc API 的每个链接,我还有很多项目要更新。所以我正在寻找一种解决方案,将我的项目文档链接到这个外部文档。
    • 我看到了这个feature,但我知道它适用于外部 Doxygen 文档,而不适用于离线 Javadoc 文档(以 .zip 存档格式提供)。我试图在我的 jdk 的 src 文件上运行 Doxygen,但我有很多错误......
    • 啊,好吧,我相信我明白了你的问题,你正在使用@link 作为 Javadoc 注释,当你运行 doxygen 时,它会将 \link 作为 doxygen 注释处理并给你很多错误
    • 应该支持每个以 at 符号 (@) 开头的命令。看到这个link。当需要外部链接时,似乎 Doxygen 使用任何格式的链接命令都失败了
    • 当然可以,但是@link 是具有指定签名的JavaDoc 指令{@link ...} @link 也是doxygen 指令。因此,如果您使用 JavaDoc,它就能够解释您的指令。如果您运行 doxygen,它无法解释指令,因为它需要 @endlink 指令来完成指令。所以你需要区分这两个命令。
    猜你喜欢
    • 2011-06-07
    • 1970-01-01
    • 2012-02-24
    • 2011-03-14
    • 2013-11-12
    • 1970-01-01
    • 2016-02-25
    • 2019-06-25
    相关资源
    最近更新 更多