JDK 1.7 允许自定义 taglet 的名称*以点开头*。 JDK 1.8 禁止吗?

JDK 1.7 allows custom taglets with names *starting* with a dot. JDK 1.8 forbids it?

我写了一个 custom taglet library,名字 开始 有一个点:.codelet.codelet.and.out 等等。它是用 JDK 7.

编译的

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

C:\...\Temp.java:5: error: no tag name after @
 * {@.codelet mypkg.Temp}`

如果我使用 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

将 taglet 源代码中的名称更改为 cod.eletcode.let 不好,因为 code 是一个已经存在的 taglet 名称),并使用该新名称,它有效。

-tag option(靠近本节底部)的 JavaDoc 工具文档指出:

Avoiding conflicts: If you want to create your own namespace, then you can use a dot-separated naming convention similar to that used for packages: com.mycompany.todo. Oracle will continue to create standard tags whose names do not contain dots. Any tag you create will override the behavior of a tag by the same name defined by Oracle. If you create a @todo tag or taglet, then it always has the same behavior you define, even when Oracle later creates a standard tag of the same name.

我是不是漏掉了什么?或者这是一个非常糟糕的无证变更?因为它需要对我的库进行相当大的更改,如果是这样的话。

仅供参考:Taglet overview docs

So am I missing something here?

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

" ... then you can use a dot-separated naming convention similar to that used for packages: com.mycompany.todo"

请注意,它说的是 "dot-separated" 命名约定,而不是 "names with dots in them"。

请注意它显示 "similar to that used for packages"。如果您尝试使用“.mypackage”作为包名,编译器会说 "No way!".

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