你很快就会发现JDK8在Javadoc方面要严格得多(默认情况下).(链接 - 见最后一点)
如果你从来没有生成任何Javadoc那么你当然不会遇到任何问题,但Maven发布过程之类的事情以及可能你的CI版本会突然失败,因为它们与JDK7一起工作得很好.任何检查Javadoc工具退出值的东西现在都会失败.warnings与JDK7相比,JDK8 Javadoc可能也更冗长,但这不是这里的范围.我们在谈论errors!
存在这个问题是为了收集有关如何处理的提案.什么是最好的方法?是否应该在源代码文件中一劳永逸地修复这些错误?如果你有一个巨大的代码库,这可能是很多工作.还有哪些其他选择?
您也可以评论以前通过的失败的故事.
wsimport工具是用于创建Web服务使用者的代码生成器.它包含在JDK中.即使您使用wsimportJDK8中的工具,它仍然会生成无法使用JDK8中的javadoc编译器编译的源代码.
我打开3-4岁的源代码文件,看到这个:
/**
* My very best class
* @author John <john.doe@mine.com>
*/
Run Code Online (Sandbox Code Playgroud)
现在由于<字符而失败.严格来说,这是合理的,但不是很宽容.
Javadoc中的HTML表格?考虑这个有效的HTML:
/**
*
* <table>
* <tr>
* <td>Col1</td><td>Col2</td><td>Col3</td>
* </tr>
* </table>
*/
Run Code Online (Sandbox Code Playgroud)
这现在失败并显示错误消息no summary or caption for table.一个快速解决方法是这样做:
/**
*
* <table summary="">
* <tr>
* <td>Col1</td><td>Col2</td><td>Col3</td>
* </tr>
* </table>
*/
Run Code Online (Sandbox Code Playgroud)
但为什么这必须是一个来自Javadoc工具的停止世界错误击败我?
{@link notexist}always returns <code>true<code> …鉴于:
String input = "one two three four five six seven";
Run Code Online (Sandbox Code Playgroud)
是否有一个正则表达式,一次String.split()抓取(最多)两个单词,这样:
String[] pairs = input.split("some regex");
System.out.println(Arrays.toString(pairs));
Run Code Online (Sandbox Code Playgroud)
结果如下:
[one two, three four, five six, seven]
Run Code Online (Sandbox Code Playgroud)
这个问题是关于分裂正则表达式.它不是 "找到一种解决方法"或其他"使其以另一种方式工作"的解决方案.
/**
* Gets the meatball icon for a nincompoop.
*
* <p>
* Example: {@code <custom:meatball color="<%= Meatball.RED %> nincompoop="${person}" />}
*
* @author King Cong
*
*/
Run Code Online (Sandbox Code Playgroud)
"$ {person}"部分会破坏文档注释,因为它使用花括号.
我正在尝试使用Netbeans 8.0在Javadoc注释中插入{@code}注释,但它无法正常工作.
我之前已经看过其他问题了(也就是说,你怎么能逃脱javadoc中的@字符?)但是html转义@并且{@literal @}两者似乎都不起作用.
我的评论看起来像这样(为了示例,使用两种方法):
/**
* blah blah blah
* <p>
* For example:
* <pre>
* {@code
* {@literal @}begin_specification
* ...
* @end_specification
* }
* </pre>
*/
Run Code Online (Sandbox Code Playgroud)
我可以点击Run -> Generate Javadoc,一切运行正常,没有错误,但是当我在浏览器中查看结果输出时,我看到了这一点:
{@literal @}begin_specification
...
@end_specification
Run Code Online (Sandbox Code Playgroud)
哪个不是理想的结果......有什么建议/想法吗?
我是Java的新手,但在过去使用过像C/C++这样的东西.我在这里做错了吗?我正在使用带有Java 1.8.0_05 x64的NetBeans 8.0(Build 201403101706).
@我的代码示例中有一个在javadoc中:
* <pre>
* public class ArticleService<Article, ArticleDao> {
* @Autowired
* private ArticleDao articleDao;
* protected ArticleDao getDao() { return articleDao; }
* }
* </pre>
Run Code Online (Sandbox Code Playgroud)
它打破了javadoc,因为预览看起来像:

怎么解决?
我有两个自己的注释,用于不同的字段和方法以及@Deprecated注释。但是,与@Deprecated注释不同,注释可以在带有描述的 Javadoc 注释中显示,我是否不可能用自己的注释来做到这一点。
小例子:
/**
* Sends "bar".
*
* @deprecated Use {@link #sendFooBar()} instead.
*/
@Deprecated
@MyAnnotation // I want to add a description to this annotation in the comment above
public void sendBar(){
System.out.prntln("bar");
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是我必须做什么,以便在评论本身中显示注释并提供评论。
我不能只是将它添加到评论中,因为它会被视为“错误的标签”。
澄清一下:我不想只在评论中显示 @ 符号。我知道该怎么做。
我想在 Javadoc 注释中包含类似于可用于@Deprecated注释的文档(描述)。
自理有注释@Documented,@Retention(RetentionPolicy.RUNTIME)并@Target({ElementType.METHOD, ElementType.FIELD})重视他们的注释。