2017-01-31 24 views
0

Кто-нибудь знает, как это исправить? Я создал клиента, чтобы потреблять веб-сервис. Код клиента:java.lang.NoClassDefFoundError: org/apache/cxf/service/invoker/Invoker

package cliente; 

import java.util.List; 

import handler.HeaderHandler; 
import webservice.BoletinOficial; 
import webservice.BoletinOficialService; 
import petanuncio.PeticionAnuncio; 
import respanuncio.RespuestaAnuncio; 

import org.apache.cxf.jaxws.binding.DefaultBindingImpl; 

import javax.xml.ws.BindingProvider; 
import javax.xml.ws.handler.Handler; 
import java.util.ArrayList; 


public class Cliente { 

/** 
* Main 
* @param args 
*/ 
@SuppressWarnings("rawtypes") 
public static void main(String[] args) { 

    String endpointURL = ""; 
    try { 


     BoletinOficialService service = new BoletinOficialService(); 

     BoletinOficial proxy = service.getBoletinOficialSoap11(); 


//rest of code 

    } catch (Exception e) { 
    e.printStackTrace(); 
    } 
} 

Проблема в том, при запуске программы и получить следующее сообщение об ошибке ANC не может даже создать «сервис»:

Exception in thread "main" java.util.ServiceConfigurationError: javax.xml.ws.spi.Provider: Provider org.apache.cxf.jaxws.spi.ProviderImpl could not be instantiated 
    at java.util.ServiceLoader.fail(Unknown Source) 
    at java.util.ServiceLoader.access$100(Unknown Source) 
    at java.util.ServiceLoader$LazyIterator.nextService(Unknown Source) 
    at java.util.ServiceLoader$LazyIterator.next(Unknown Source) 
    at java.util.ServiceLoader$1.next(Unknown Source) 
    at javax.xml.ws.spi.Provider.getProviderUsingServiceLoader(Unknown Source) 
    at javax.xml.ws.spi.Provider.provider(Unknown Source) 
    at javax.xml.ws.Service.<init>(Unknown Source) 
    at webservice.BoletinOficialService.<init>(BoletinOficialService.java:46) 
    at cliente.Cliente.main(Cliente.java:35) 
Caused by: java.lang.NoClassDefFoundError: org/apache/cxf/service/invoker/Invoker 
    at java.lang.Class.getDeclaredConstructors0(Native Method) 
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source) 
    at java.lang.Class.getConstructor0(Unknown Source) 
    at java.lang.Class.newInstance(Unknown Source) 
    ... 8 more 
Caused by: java.lang.ClassNotFoundException: org.apache.cxf.service.invoker.Invoker 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    ... 12 more 

Этот класс и другие были созданы с помощью wsimport из WSDL file, althoug Я не думаю, что это связано с ошибкой, которую я получаю. Класс org.apache.cxf.jaxws.spi.ProviderImpl находится в файле cxf-rt-frontend-jaxws-3.1.1.jar, который добавляется в качестве ссылки на проект.

This is the project structure

These are the libraries

Что мне не хватает? Заранее спасибо.

ответ

0

Добавьте компиляции зависимостей, которые вы найдете в https://mvnrepository.com/artifact/org.apache.cxf/cxf-rt-frontend-jaxws/3.1.1

Лучше переключитесь на Maven.

+0

Ну, я переключился на Мейвен и на аренду, ошибка, о которой я описал, ушла, хотя я получаю других. Спасибо. – bentakayze

+0

Какие ошибки? Существует веб-страница о том, как настроить CXF в Maven по адресу http://cxf.apache.org/docs/using-cxf-with-maven.html. Рядом с cxf-rt-frontend-jaxws вы также должны объявить cxf -rt-transports-http и, возможно, зависимость cxf-rt-transports-http-jetty. Если вы не используете зависимость cxf-rt-transports-http-jetty, вам необходимо использовать CXFServlet для настройки ваших веб-сервисов. – toongeorges

+0

CXF имеет примеры проектов, как описано в http://cxf.apache.org/docs/sample-projects.html. Проверьте https://cxf.apache.org/source-repository.html, как получить исходный код проекта CXF. Примеры проектов можно найти там под папкой src/main/release/samples – toongeorges

0

Invoker является частью API CXF. Похоже, cxf-api отсутствует.

Если вы используете Maven, добавьте зависимость:

<dependency> 
    <groupId>org.apache.cxf</groupId> 
    <artifactId>cxf-api</artifactId> 
    <version>YOUR_VERSION</version> 
</dependency> 

Else добавить баночку в свой путь к классам.

+0

Очевидно, что он не использует Maven. Наверное, должен. Одна вещь, которую решил Maven, управляет транзитивными зависимостями. Не нужно, чтобы он сам начал управлять этими транзитивными зависимостями. – toongeorges

+0

Я не использую Maven. Я также добавил jar (другие) в путь к классам через Properties/Java Build Path/Add Variable. Добавлена ​​папка, а затем все файлы jar, а затем проверили их на вкладке «Заказ и экспорт». Сохраненные изменения и очистка и построение проекта снова и запустить клиент с тем же результатом: ошибка. – bentakayze

+0

Я попытался изменить тип проекта на Maven, но начал получать severa-ошибки, поэтому я хотел попробовать, если я могу исправить это в первую очередь. – bentakayze