我想將缺少的serialversionUID警告升級爲錯誤,並在我的構建發生在javac中時失敗。忽略Javac中的可變參數警告
我加入以下到我的Ant任務:
<compilerarg value="-Xlint:serial"/>
<compilerarg value="-Werror"/>
然而,構建也沒有可變參數警告:
non-varargs call of varargs method with inexact argument type for last parameter;
cast to java.lang.Object for a varargs call
cast to java.lang.Object[] for a non-varargs call and to suppress this warning
我試圖改變javac任務至
<compilerarg value="-Xlint:-varargs"/>
<compilerarg value="-Xlint:serial"/>
<compilerarg value="-Werror"/>
但是,它沒有區別。我如何讓編譯器忽略這些警告,並且只在serialversionUID上失敗?
我使用Ant 1.9.4和用javac 1.6u37,1.7u79嘗試和1.8u92
Example類:
package com.stackoverflow.compiler;
import java.io.Serializable;
public class Main implements Serializable {
public static void foo(Object... args) {
System.out.println("Test foo");
}
public static void main(String[] args) {
// is args supposed to be an array of objects
// or the only element in an array?
foo(args);
}
}
這並不能解決問題。它還輸出「方法foo(Object ...)的最後一個參數的Type String []與vararg參數類型不完全匹配。Cast to Object []確認非可變參數調用,或者傳遞類型的單個參數可變參數調用的對象。「 – opticyclic
@opticyclic重點在於,通過'ecj',您可以獨立地將不同的診斷信息微調爲警告或錯誤。您顯示的診斷默認分類爲警告。我會更新我的答案,以涵蓋如何完全禁止該警告。 –
你說得對。由於我在同一班上有兩個例子,所以我輸出結果令人困惑。 – opticyclic