Maven 为什么wsdl2java生成的代码随意使用CXF依赖项?
我使用Apache CXF 3.0.4Maven 为什么wsdl2java生成的代码随意使用CXF依赖项?,maven,cxf,jax-ws,wsdl2java,Maven,Cxf,Jax Ws,Wsdl2java,我使用Apache CXF 3.0.4wsdl2java通过以下命令从中生成代码: ./wsdl2java -client -exsh true -d weather -p weather -verbose url 据我所知,wsdl2java仅使用JAX-WS生成纯java代码。生成的代码在没有任何附加库/依赖项的情况下运行良好。我已经对它进行了grepped以查找任何CXF类,但它似乎没有CXF。当我将特定的CXF依赖项添加到我的pom.xml中时,问题就出现了。这种依赖关系是: org
wsdl2java
通过以下命令从中生成代码:
./wsdl2java -client -exsh true -d weather -p weather -verbose url
据我所知,wsdl2java
仅使用JAX-WS生成纯java代码。生成的代码在没有任何附加库/依赖项的情况下运行良好。我已经对它进行了grepped以查找任何CXF类,但它似乎没有CXF。当我将特定的CXF依赖项添加到我的pom.xml
中时,问题就出现了。这种依赖关系是:
org.apache.cxf
它是有效的。但不是为了我的工作申请。它毕竟抛出了NPE:
线程“main”javax.xml.ws.soap.SOAPFaultException中的异常:java.lang.NullPointerException
...
原因:org.apache.cxf.binding.soap.SoapFault:java.lang.NullPointerException
位于org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:86)
位于org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:52)
位于org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:41)
位于org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
位于org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:113)
位于org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:69)
位于org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34)
位于org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
位于org.apache.cxf.endpoint.clientmpl.onMessage(clientmpl.java:802)
位于org.apache.cxf.transport.http.httpconductor$WrappedOutputStream.handleResponseInternal(httpconductor.java:1642)
位于org.apache.cxf.transport.http.httpconductor$WrappedOutputStream.handleResponse(httpconductor.java:1533)
位于org.apache.cxf.transport.http.httpconductor$WrappedOutputStream.close(httpconductor.java:1336)
位于org.apache.cxf.transport.AbstractConductor.close(AbstractConductor.java:56)
位于org.apache.cxf.transport.http.httpconductor.close(httpconductor.java:652)
位于org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderdingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
位于org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
位于org.apache.cxf.endpoint.clientmpl.doInvoke(clientmpl.java:516)
位于org.apache.cxf.endpoint.clientmpl.invoke(clientmpl.java:425)
位于org.apache.cxf.endpoint.clientmpl.invoke(clientmpl.java:326)
位于org.apache.cxf.endpoint.clientmpl.invoke(clientmpl.java:279)
位于org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
位于org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:139)
... 还有7个
提问时间
META-INF/services/javax.xml.ws.spi.Provider
(如果您使用maven:简单地将其放在这里:/src/main/resources/META-INF/services/javax.xml.ws.spi.Provider
)
并且它必须包含一行:
javax.xml.ws.spi.Provider