Ошибка компиляции Java в Ant: использование литералов класса в аннотациях - PullRequest
0 голосов
/ 31 октября 2011

У меня есть следующая аннотация Java для класса (это для плагина myBatis):

@Intercepts({ @Signature(type = ResultSetHandler.class, method = "handleResultSets", args = (Statement.class)) })
public class MyResultSetHandlerPlugin implements Interceptor {
    //do stuff...
}

Он компилируется и отлично работает в Eclipse, но при попытке запустить скрипт сборки Ant я получаю следующую ошибку:

[javac] C:CLIP_PoC\src\com\lmig\am\claims\clip\MyPResultSetHandlerPlugin.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 Ответ

2 голосов
/ 31 октября 2011

Если вы пытаетесь передать массив элементов в качестве параметра аннотации, вам нужно использовать фигурные скобки, а не круглые скобки, чтобы указать, что элемент является массивом.

@Intercepts({ @Signature(type = ResultSetHandler.class, method = "handleResultSets", args = {Statement.class}) })
...