Ich möchte die fehlende serialversionUID-Warnung zu einem Fehler eskalieren und mein Build fehlschlagen, wenn es in javac auftritt.Warnungen von Varargs ignorieren In Javac
Ich habe folgendes meine Ant-Task hinzugefügt:
<compilerarg value="-Xlint:serial"/>
<compilerarg value="-Werror"/>
jedoch die Erstellung fehl auch mit varargs Warnungen:
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
Ich habe versucht, die javac Aufgabe
<compilerarg value="-Xlint:-varargs"/>
<compilerarg value="-Xlint:serial"/>
<compilerarg value="-Werror"/>
Ändern
Es machte jedoch keinen Unterschied. Wie lasse ich den Compiler diese Warnungen ignorieren und nur auf der serialversionUID fehlschlagen?
I Ant 1.9.4 bin mit und versucht, mit Javac 1.6u37, 1.7u79 und 1.8u92
Beispiel Klasse:
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);
}
}
Dies löst das Problem nicht. Es gibt auch "Type String [] des letzten Arguments der Methode foo (Object ...) aus, stimmt nicht genau mit dem Vararg-Parametertyp überein. Cast to Object [], um den Nicht-Varargs-Aufruf zu bestätigen oder einzelne Argumente vom Typ zu übergeben Objekt für eine Varargs-Invokation. " – opticyclic
@opticyclic Der Punkt ist, dass Sie mit 'ecj' verschiedene Diagnosen unabhängig voneinander auf Warnung oder Fehler einstellen können. Die angezeigte Diagnose wird standardmäßig als Warnung klassifiziert. Ich werde meine Antwort aktualisieren, um zu beschreiben, wie diese Warnung vollständig unterdrückt werden kann. –
Sie haben Recht. Ich habe die Ausgabe verwechselt, da ich zwei Beispiele in derselben Klasse hatte. – opticyclic