#java #ant #annotations #compiler-errors #javac
#java #муравей #аннотации #ошибки компилятора #javac
Вопрос:
У меня есть следующая Java-аннотация к классу (это для плагина MyBatis):
@Intercepts({ @Signature(type = ResultSetHandler.class, method = "handleResultSets", args = (Statement.class)) })
public class MyResultSetHandlerPlugin implements Interceptor {
//do stuff...
}
Он компилируется и отлично работает в Eclipse, но при попытке запустить сценарий сборки Ant я получаю следующую ошибку:
[javac] C:CLIP_PoCsrccomlmigamclaimsclipMyPResultSetHandlerPlugin.java:27: annotation value must be a class literal
[javac] @Intercepts({ @Signature(type = ResultSetHandler.class, method = "handleResultSets", args = (Statement.class)) })
[javac] ^
[javac] 1 error
Я попытался полностью квалифицировать классы, используемые в аннотации, но это приводит к той же ошибке. Есть мысли о том, что я делаю неправильно?
Спасибо.
Ответ №1:
Если вы пытаетесь передать массив элементов в качестве параметра аннотации, вам необходимо использовать фигурные скобки, а не круглые скобки, чтобы указать, что элемент является массивом.
@Intercepts({ @Signature(type = ResultSetHandler.class, method = "handleResultSets", args = {Statement.class}) })