JAX-WS和wsimport生成的客户端存根导致异常

时间:2014-09-24 15:45:00

标签: java web-services jax-ws wsimport

我正在使用wsimport生成一个Web服务客户端存根。从命令行导入后,我可以在Eclipse中看到生成的代码。我没有生成代码的问题。生成的类编译得很好,但是当从生成的存根调用任何方法时,它会导致

java.lang.NullPointerException
at org.apache.xalan.transformer.TransformerIdentityImpl.setDocumentLocator(TransformerIdentityImpl.java:823)
at com.sun.xml.bind.v2.runtime.unmarshaller.DomLoader$State.<init>(DomLoader.java:78)
at com.sun.xml.bind.v2.runtime.unmarshaller.DomLoader.startElement(DomLoader.java:113)
at com.sun.xml.bind.v2.runtime.unmarshaller.ProxyLoader.startElement(ProxyLoader.java:55)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:449)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext.java:427)
at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.handleStartElement(StAXStreamConnector.java:275)
at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:209)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:358)`

通过查看错误的“unmarshaller”部分,我认为这可能与版本兼容性有关。

单击并检查Service.GetPort()方法的值,向我显示此处使用的JAX-WS版本为JAX-WS RI 2.1.3-b02-, 而wsimport -version上的命令行(我最初运行wsimport的地方)在JDK 6中返回版本JAX-WS RI 2.1.6

版本差异是否会导致此异常?有没有人见过这个例外?如何对齐版本?

1 个答案:

答案 0 :(得分:0)

结果证明java(JDK)版本和xalan.jar(项目引用的jar)之间存在不匹配。我使用的是JDK 6,而xalan jar是版本1.x.我下载了最新版本的xalan.jar,问题就消失了。