Я пытаюсь создать WS-клиент с помощью Apache CXF 2.7.11. Я создал образцы классов с помощью инструмента wsdl2java
. У меня есть проект Eclipse, с:NullPointerException при попытке запустить код, сгенерированный wsdl2java
- всего кодом, генерируемого WSDL2Java
- всех файлов банка с/Lib установлен.
я в основном после этого урока: http://cxf.apache.org/docs/developing-a-consumer.html
Когда я запускаю пример кода, созданного wsdl2java
, я получаю эту ошибку:
Exception in thread "main" java.lang.NullPointerException
at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:98)
at org.apache.cxf.jaxws.ServiceImpl.initializePorts(ServiceImpl.java:204)
at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:149)
at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:101)
at javax.xml.ws.Service.<init>(Service.java:67)
at com.twinfield.Session.<init>(Session.java:46)
at com.twinfield.SessionSoap_SessionSoap_Client.main(SessionSoap_SessionSoap_Client.java:48)
Используя отладчик, я обнаружил, что нуль в вопросе вызвано CXFBusImpl.getExtension(WSDLManager.class)
. Строка 98 в WSDLServiceFactory.java гласит:
definition = getBus().getExtension(WSDLManager.class).getDefinition(url);
Я думал, что проблема была с моим адресом WSDL, но на основе выше, что может быть не так? Я попробовал как локальный файл, так и URL-адрес в качестве значения для переключателя -wsdlLocation wsdl2java
. (В настоящее время я вообще не использую этот параметр)
Веб-поиск выявил только некоторые очень старые проблемы с версиями 2.0 и 2.4. Здесь есть аналогичный вопрос: Null Pointer Exception in WSDServiceFactory - Apache CXF libs, но ответ был только для использования старой версии ...
Может ли это быть проблемой конфигурации? Нужны ли мне какие-либо файлы конфигурации в моем проекте?
Я нашел аналогичную проблему, чтобы проверить возможное решение в http://stackoverflow.com/questions/30578380/error-after-upgrading-camel-cxf-to-2-15-2-class-cast-exception/42023591# 42023591 –