JDK 1.7允许自定义标记名称*起始*带点.JDK 1.8禁止它吗?

ali*_*ind 9 java javadoc taglet java-8

我写了一个自定义的Taglet的图书馆与名称开始以一个点:.codelet,.codelet.and.out,等等.它是用JDK 7编译的.

使用1.7生成JavaDoc时javadoc.exe,它工作正常.但是当使用JDK 8生成它时,它失败了,因为

C:\...\Temp.java:5: error: no tag name after @
 * {@.codelet mypkg.Temp}`
Run Code Online (Sandbox Code Playgroud)

如果我使用 taglet(而不是taglet代码本身)将代码更改为{@codelet mypkg.Temp}:

C:\...\Temp.java:5: error: unknown tag: codelet
 * {@codelet mypkg.Temp}
Note: Custom tags that were not seen:  @.codelet
1 error
Run Code Online (Sandbox Code Playgroud)

更改taglet源代码中的名称cod.elet(code.let因为code已经存在的taglet名称不好),并使用该新名称,它可以工作.

-tag选项的JavaDoc工具文档(在该部分的底部附近)指出:

避免冲突:如果要创建自己的命名空间,则可以使用与包用的类似的点分隔命名约定:com.mycompany.todo.Oracle将继续创建名称不包含点的标准标记.您创建的任何标记都将使用Oracle定义的相同名称覆盖标记的行为.如果创建@todo标记或标记,则它始终具有您定义的相同行为,即使Oracle稍后创建了同名的标准标记.

我在这里错过了一些东西吗?或者这是一个无证的变化,真的很糟糕?因为它需要我的库中有一个很大的变化,如果是这样的话.

仅供参考:Taglet概述文档

Ste*_*n C 4

那么我在这里错过了什么吗?

好吧,您引用的文档部分是这样说的:

“...那么您可以使用类似于包的点分隔命名约定:com.mycompany.todo”

请注意,它说的是“点分隔”命名约定,而不是“其中带有点的名称”。

请注意,它说“类似于用于包的”。如果您尝试使用“.mypackage”作为包名称,编译器会说“No way!”。

我的解读是您的“.codelet”标签名称不符合文档中规定的标准。因此,Java 8 版本javadoc已更改为严格执行 taglet 命名规则。从您的角度来看,这是不幸的,但最终问题出在您的 javadoc 注释中,而不是工具中。