Javadoc (via Maven) gibt mir den folgenden Fehler in einem meiner Java JAX-RS Interface Methodensignaturen:swagger-maven-plugin löst Javadoc-Warnung aus: element value muss ein konstanter Ausdruck sein (aber es ist!) In Java-Annotation
error: element value must be a constant expression
Hier ist meine JAX-RS-Schnittstelle:
public interface FooResource {
@Consumes(APPLICATION_FORM_URLENCODED_UTF_8)
public void bar();
}
Javdoc gibt den Fehler für @Consumes
. Hier ist die Definition für APPLICATION_FORM_URLENCODED_UTF_8
, die in MyAppConstants
im selben Projekt erscheint:
public static final String APPLICATION_FORM_URLENCODED_UTF_8 =
APPLICATION_FORM_URLENCODED + ";" + CHARSET_PARAMETER + "=UTF-8";
Und hier ist die Definition von APPLICATION_FORM_URLENCODED
, die in javax.ws.rs.core.MediaType
erscheint:
public final static String APPLICATION_FORM_URLENCODED = "application/x-www-form-urlencoded";
Und hier ist die Definition von CHARSET_PARAMETER
, das scheint auch in javax.ws.rs.core.MediaType
:
public static final String CHARSET_PARAMETER = "charset";
Nun frage ich Sie : Was ist mit ist nicht zur Kompilierzeit konstant?
Die Fehlermeldung nicht, dass ich eine Literal bereitstellen muss. Es hieß, dass ich eine Konstante bereitstellen musste. Was ist also mit einer Konstante?
(ich konnte fast schwören, dass dies zu einer Zeit gearbeitet, aber plötzlich aufgehört zu arbeiten.)
Update:gefunden Ursache, aber immer noch nicht verstehen.
Aus irgendeinem Grund wird nur das Einfügen des swagger-maven-plugin
in das POM dieses Problem auslösen! Mein Code ändert sich nicht, aber sobald ich die folgende Abhängigkeit hinzufüge, erhalte ich plötzlich Javadoc-Warnungen für meinen bestehenden Code !!!
Wie kann eine einzelne Abhängigkeit dazu führen, dass Javadoc in einer Codedatei anders funktioniert? Was macht swagger-maven-plugin
?
Sicher ist das 'final' Schlüsselwort noch da? Ohne sie verliert die Klassenvariable ihre konstante Eigenschaft. – Seelenvirtuose
Hast du schon die gute alte 'clean install' versucht? –
Ja, das 'final' Schlüsselwort ist immer noch da. Ja, ich habe eine "mvn clean install" gemacht. –