Создание динамического клиента Apache CXF

Я пытаюсь использовать Apache CXF для общения с неизвестным веб-сервисом. Я выполнил "Динамический клиент" из Apache.

JaxWsDynamicClientFactory factory = JaxWsDynamicClientFactory.newInstance();
 Client client = factory.createClient(wsdlURL.toExternalForm(), SERVICE_NAME);

Это работало, но теперь я получаю это исключение при вызове createClient():

java.lang.IllegalStateException: Unable to create schema compiler
 Caused by:
 javax.xml.bind.JAXBException
 - with linked exception:
 [java.lang.ClassNotFoundException: com/sun/tools/internal/xjc/api/XJC]

Это похоже на существующую ошибку. Я использую DOSGi singlebundle 1.2, который включает cxf-minimum-2.2.9.jar; это означает, что ошибка должна быть исправлена ​​в версии, которую я использую. jaxb-api включен в мой дистрибутив Apache CXF, который при проверке содержит jaxb-xjc.

Может кто-нибудь дать мне некоторое представление о том, что я делаю неправильно? Я клянусь, что это работало.

3 ответа

"java.lang.ClassNotFoundException: com/sun/tools/" часто возникает, если вы используете JRE в своей среде IDD вместо JDK. Убедитесь, что вы используете JDK в среде IDE (например, eclipse)


<dependency>
 <groupid>com.sun.xml.bind</groupid>
 <artifactid>jaxb-xjc</artifactid>
 <version>2.2.11</version>
</dependency>

разрешенная проблема


Другим решением является включение cxf-rt-ядра в ваши зависимости от Maven.

licensed under cc by-sa 3.0 with attribution.