Javadoc标签@link 在Doxygen中无法解析链接。

3

我用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源代码和特定的输入/输出目录)
这与此问题类似,但是该主题作者的解决方法对我无效。
提前感谢您的帮助。
编辑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) {
    }
}

最终结果:
http://s11.postimg.org/wgndev8hv/doxy_jdk.png 然而,构建.chm帮助文件几乎是不可能的,因为这需要一段时间来完成此任务,并且生成的文件非常大。但这是另一个问题...
1个回答

0

我没有尝试过这个,但是我相信你需要在@link之前加上转义字符。这应该看起来像\@link或者@@link,但是我更喜欢\@link

现在我认为doxygen应该能够正确处理你的javadoc注释,但我不确定这是否适用于JavaDoc,或者JavaDoc是否会抱怨。另外,在你的doxygen文档中可能会看起来很奇怪,因为应该会出现一个@link JList},...而我猜这不是你想要的。


抱歉,但我误读了这个主题。它对我也起作用,但如果我想修复每个指向Javadoc API的链接,我就有很多项目需要更新。因此,我正在寻找一种将我的项目文档链接到这个外部文档的解决方案。 - kikouk
我看到了这个功能,但我理解它只适用于外部的Doxygen文档,而不适用于离线的Javadoc文档(以.zip压缩包格式提供)。我尝试对我的jdk源代码运行Doxygen,但是出现了大量错误... - kikouk
啊,好的,我相信我明白你的问题了,你正在使用@link作为Javadoc注释,当你运行doxygen时,它将\link视为doxygen注释并给出很多错误。 - aldr
每个以at符号(@)开头的命令都应该得到支持。请参阅此链接:http://www.stack.nl/~dimitri/doxygen/manual/commands.html。当需要外部链接时,Doxygen似乎无法处理任何格式的链接命令。 - kikouk
当然,@link是一个JavaDoc指令,具有特定的签名{@link ...}@link也是一个doxygen指令。因此,如果您使用JavaDoc,它能够解释您的指令。如果您运行doxygen,则无法解释该指令,因为它需要一个@endlink指令来完成该指令。因此,您需要区分这两个命令。 - aldr
+1 是给你自己解决的,现在我终于明白你试图实现什么了 :) - aldr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接