java.lang.NoClassDefFoundError:org/apache/cxf/service/invoker/invoker

java.lang.NoClassDefFoundError:org/apache/cxf/service/invoker/invoker,java,noclassdeffounderror,classnotfoundexception,Java,Noclassdeffounderror,Classnotfoundexception,有人知道如何解决这个问题吗? 我创建了一个客户端来使用Web服务。客户端代码为: package cliente; import java.util.List; import handler.HeaderHandler; import webservice.BoletinOficial; import webservice.BoletinOficialService; import petanuncio.PeticionAnuncio; import respanuncio.Respuest

有人知道如何解决这个问题吗? 我创建了一个客户端来使用Web服务。客户端代码为:

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甚至无法创建“服务”:

线程“main”java.util.ServiceConfigurationError:javax.xml.ws.spi.Provider:Provider org.apache.cxf.jaxws.spi.ProviderImpl中的异常无法实例化 位于java.util.ServiceLoader.fail(未知源) 位于java.util.ServiceLoader.access的$100(未知来源) 位于java.util.ServiceLoader$LazyIterator.nextService(未知源) 位于java.util.ServiceLoader$LazyIterator.next(未知源) 位于java.util.ServiceLoader$1.next(未知源) 位于javax.xml.ws.spi.Provider.getProviderUsingServiceLoader(未知源) 位于javax.xml.ws.spi.Provider.Provider(未知源) 位于javax.xml.ws.Service。(未知源) 位于webservice.boletonicialservice(boletonicialservice.java:46) 位于cliente.cliente.main(cliente.java:35) 原因:java.lang.NoClassDefFoundError:org/apache/cxf/service/invoker/invoker 位于java.lang.Class.getDeclaredConstructors0(本机方法) 位于java.lang.Class.privateGetDeclaredConstructors(未知源) 位于java.lang.Class.getConstructor0(未知源) 位于java.lang.Class.newInstance(未知源) ... 8个以上 原因:java.lang.ClassNotFoundException:org.apache.cxf.service.invoker.invoker 位于java.net.URLClassLoader.findClass(未知源) 位于java.lang.ClassLoader.loadClass(未知源) 位于sun.misc.Launcher$AppClassLoader.loadClass(未知源) 位于java.lang.ClassLoader.loadClass(未知源) ... 还有12个 这个类和其他类是通过wsimport从wsdl文件创建的,尽管我认为这与我得到的错误无关。 类org.apache.cxf.jaxws.spi.ProviderImpl位于cxf-rt-frontend-jaxws-3.1.1.jar文件中,作为项目参考添加


我有什么遗漏吗?提前感谢您。

调用程序是CXF API的一部分。似乎缺少cxf api

如果使用maven,请添加依赖项:

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

org.apache.cxf
cxfapi
你的版本

否则将jar添加到类路径。

添加在


最好换成Maven。

显然,他没有使用Maven。也许他应该。Maven解决的一件事是管理可传递依赖项。不需要他自己开始管理这些可传递的依赖项。我不使用Maven。我还通过Properties/javabuildpath/Add变量将jar(一个其他的)添加到类路径中。添加一个文件夹,然后添加所有jar文件,然后在“订单和导出”选项卡中检查它们。保存更改并重新清理和构建项目,然后运行客户端,结果相同:错误。我试图将项目类型更改为Maven,但开始出现几个错误,因此我想尝试是否可以首先修复它。我切换到Maven,错误消失了。非常感谢。好吧,我切换到Maven,至少我描述的错误消失了,尽管我还有其他错误。谢谢。什么样的错误?在CXF-rt前端jaxws旁边有一个关于如何在Maven中配置CXF的网页,您还必须声明CXF-rt-transports-http依赖项和可选的CXF-rt-transports-http-jetty依赖项。如果不使用cxf rt transports http jetty依赖项,则必须使用CXFServlet来配置web服务。cxf包含示例项目,如中所述。检查如何获取CXF项目的源代码。示例项目可以在src/main/release/samples文件夹下找到。事实上,后面的错误是由于cxf rt transports http jetty依赖性引起的,但我将其添加到Pom.xml中,并已修复。非常感谢!
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-api</artifactId>
    <version>YOUR_VERSION</version>
</dependency>