簡體   English   中英

JDK 1.7允許自定義標記名稱*起始*帶點。 JDK 1.8禁止它嗎?

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

我寫了一個自定義的Taglet的庫與以點開始的名字: .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選項的JavaDoc工具文檔(在該部分的底部附近)指出:

避免沖突:如果要創建自己的命名空間,則可以使用與包用的類似的點分隔命名約定:com.mycompany.todo。 Oracle將繼續創建名稱不包含點的標准標記。 您創建的任何標記都將使用Oracle定義的相同名稱覆蓋標記的行為。 如果創建@todo標記或標記,則它始終具有您定義的相同行為,即使Oracle稍后創建了同名的標准標記。

我在這里錯過了一些東西嗎? 或者這是一個無證的變化,真的很糟糕? 因為它需要我的庫中有很大的變化,如果是這樣的話。

僅供參考: Taglet概述文檔

我在這里錯過了一些東西嗎?

那么,你引用的文檔部分說:

“...然后你可以使用與用於包的類似的點分隔命名約定:com.mycompany.todo”

請注意,它表示“點分隔”命名約定,而不是“帶有點的名稱”。

請注意,它說“類似於用於包的”。 如果您嘗試使用“.mypackage”作為包名,編譯器會說“沒辦法!”。

我的閱讀是你的“.codelet”標簽名稱不符合文檔中規定的標准。 所以發生的事情是Java 8版本的javadoc已被更改為嚴格執行taglet命名規則。 從您的角度來看,這是不幸的,但最終問題出在您的javadoc評論中,而不是工具。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM