Je veux escalader l'avertissement serialversionUID manquant à une erreur et échouer ma construction quand elle se produit dans javac.Ignorer les avertissements de Varargs dans Javac
J'ai ajouté ce qui suit à ma tâche de fourmi:
<compilerarg value="-Xlint:serial"/>
<compilerarg value="-Werror"/>
Cependant, la génération échoue également avec des avertissements varargs:
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
J'ai essayé de changer la tâche javac à
<compilerarg value="-Xlint:-varargs"/>
<compilerarg value="-Xlint:serial"/>
<compilerarg value="-Werror"/>
Cependant, cela n'a fait aucune différence. Comment est-ce que je fais le compilateur ignorer ces avertissements et seulement échouer sur le serialversionUID?
J'utilise Ant 1.9.4 et essayé avec Javac 1.6u37, 1.7u79 et 1.8u92
Exemple Classe:
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);
}
}
Cela ne résout pas le problème. Il sort aussi "Type String [] du dernier argument à la méthode foo (Object ...) ne correspond pas exactement au type de paramètre vararg. Cast to Object [] pour confirmer l'invocation non-varargs, ou passer des arguments individuels de type Objet pour une invocation de varargs. " – opticyclic
@opticyclic Le fait est qu'avec 'ecj' vous pouvez ajuster indépendamment différents diagnostics à l'avertissement ou à l'erreur. Le diagnostic que vous affichez est classé comme un avertissement par défaut. Je vais mettre à jour ma réponse pour couvrir comment supprimer complètement cet avertissement. –
Vous avez raison. J'ai confondu le résultat car j'avais deux exemples dans la même classe. – opticyclic