我用.codelet
,.codelet.and.out
等编写了一个名为 start 的custom taglet library {。}}。它是用JDK 7编译的。
使用1.7 javadoc.exe
生成JavaDoc时,它可以正常工作。但是当使用JDK 8生成它时,它会失败,因为
C:\...\Temp.java:5: error: no tag name after @
* {@.codelet mypkg.Temp}`
如果我使用将代码更改为{@codelet mypkg.Temp}
C:\...\Temp.java:5: error: unknown tag: codelet
* {@codelet mypkg.Temp}
Note: Custom tags that were not seen: @.codelet
1 error
将taglet源代码中的名称更改为cod.elet
(code.let
并不好,因为code
是已存在的标记名称),并且使用该新名称,它可以正常工作。
-tag
option的JavaDoc工具文档(在该部分的底部附近)指出:
避免冲突:如果要创建自己的命名空间,则可以使用与包用的类似的点分隔命名约定:com.mycompany.todo。 Oracle将继续创建名称不包含点的标准标记。您创建的任何标记都将使用Oracle定义的相同名称覆盖标记的行为。如果您创建@todo标记或标记,那么它始终具有您定义的相同行为,即使Oracle稍后创建了同名的标准标记。
我在这里错过了一些东西吗?或者这是一个无证的变化,真的很糟糕?因为它需要我的库中有很大的变化,如果是这样的话。
仅供参考:Taglet overview docs
答案 0 :(得分:4)
我在这里错过了一些东西吗?
嗯,你引用的文档部分说明了这一点:
" ...然后你可以使用与用于包的类似的点分隔命名约定:com.mycompany.todo"
请注意,它表示"点分隔"命名约定,而不是"带有点的名称"。
请注意,它表示"类似于用于包"。如果您尝试使用" .mypackage"作为包名,编译器会说"没办法!"。
我的阅读是你的" .codelet"标签名称不符合文档中规定的标准。所以发生的事情是{8}的Java 8版本已被更改为严格执行taglet命名规则。从您的角度来看,这很不幸,但最终问题出在您的javadoc评论中,而不是工具。