java.lang.NoClassDefFoundError:org/apache/cxf/service/invoker/invoker
有人知道如何解决这个问题吗? 我创建了一个客户端来使用Web服务。客户端代码为: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
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>