簡體   English   中英

如何抑制有關棄用api的javac警告?

[英]How can I suppress javac warnings about deprecated api?

當我編譯時,javac輸出:

Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.`

我希望壓制這個警告。 嘗試-Xlint:none似乎沒有幫助。

從我在文檔中可以看出,您不能在命令行上執行此操作。

根據javac文檔 ,-Xlint:none僅禁用“Java語言規范未強制要求”的警告。 似乎警告您使用已棄用的API由語言規范管理。

您最好的選擇是修復已棄用API的使用。 但是,一個選項是將@SuppressWarnings("deprecation")注釋添加到使用不推薦使用的API的類或方法中。

兩種可能的方式:

  1. 不要使用已棄用的API
  2. 使用@SuppressWarnings("deprecation")

谷歌搜索這個問題的其他人偶然發現了這個問題...

嘗試:-Xlint:-deprecation

它似乎適用於JDK 6 ......不確定其他人。

使用Java 6,@ Depreated注釋和comiler標志都不會對您有所幫助。 對我有用的唯一解決方案是在不推薦使用的方法上添加帶有@deprecated (小型大寫)標記的javadoc注釋

/**
  * @deprecated overriding deprecated method
  */
@Override
public javax.xml.bind.Validator createValidator() throws JAXBException {...}

(該示例來自一個派生自JAXBContext的類。)

(我沒有導入已棄用的Validator類以避免對import語句發出警告。)

使用gradle時,您可以輕松配置它:

tasks.withType(JavaCompile) {
    options.deprecation = false
}

(使用Gradle 2和Java 8測試)

如果它是一個核心Java API,幾乎可以肯定有一個替代品可以做你想要的。 使用該額外參數運行javac,然后查看已棄用方法的API並根據需要進行替換。

使用nowarn屬性見下文

例如

<javac srcdir="src" 
  destdir="build/classes" source="1.6" 
  target="1.6" debug="true" encoding="Cp1252"
  nowarn="on">

默認情況下,nowarn屬性已關閉

@SuppressWarnings("deprecation")不適用於我,而是我用過的

@SuppressWarnings("unchecked")

如果您在命令行中進行編譯,則可以使用grep過濾消息,只過濾掉包含不需要內容的消息,例如grep -v deprecated 你可以用| 將輸出發送到grep,

your compile command | grep -v deprecated

暫無
暫無

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

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