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.elet
(code.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 注释中,而不是工具中。
我写了一个 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.elet
(code.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 注释中,而不是工具中。