Аннотация XmlElement не разрешена с помощью WebParam - PullRequest
16 голосов
/ 21 ноября 2011

У меня есть метод внутри веб-службы со следующей подписью:

@WebResult(name="purchaseId") public int CreatePurchase(
            @XmlElement(required=true)
            @WebParam(name = "item") String item {
  ...
}

Мне кажется (основываясь на информации, которую я нашел), что должно работать. К сожалению, я получаю следующее сообщение об ошибке при компиляции:

The annotation @XmlElement is disallowed for this location

Кто-нибудь знает, как решить проблему?

Ответы [ 2 ]

33 голосов
/ 21 ноября 2011

JAX-B включен в JDK по умолчанию.Версия, которая поставляется с конкретным JDK, обновляется не так часто, как сама JAX-B.Текущая версия, которая поставляется с JDK (1.6) - это JAX-B 2.1.10 (задокументировано здесь ).

@ XmlElement разрешено только для параметров метода, начиная с JAX-B 2.2

Когда Java загружает библиотеки, загружает библиотеки, поставляемые с JDK, прежде чем загружает библиотеки, находящиеся в пути к классам.Обновление до Java 7 решит вашу проблему.Существует также процесс сообщения Java о том, что вы хотите использовать более современную библиотеку, если вы не можете выполнить обновление до Java 7. Они называются «одобренными» библиотеками, и вы должны поместить библиотеку в ту жеструктура папок как сам JDK.Процесс описан здесь .

1 голос
/ 11 декабря 2016

Если у вас появляется следующее сообщение об ошибке: « Аннотация @XmlElement запрещена для этого местоположения », есть вероятность, что вы используете неправильный оператор импорта.

Измените егоto:

import javax.xml.bind.annotation.XmlElement;

Поскольку Eclipse предлагает другой пакет в качестве первого варианта, это очень распространенная ошибка.

...