我正在使用Java中的webservices,在打开端口并调用服务之后,我尝试捕获“com.sun.xml.ws.wsdl.parser.InaccessibleWSDLException
”。
这在我的开发Glassfish v2服务器上运行良好,但是当我将WAR文件转移到Tomcat时,我得到了一个NoClassDefFoundError:
java.lang.NoClassDefFoundError: com/sun/xml/ws/wsdl/parser/InaccessibleWSDLException
我做了一些谷歌搜索,发现JAR jaxws-rt.jar 有InaccessibleWSDLException
类。但是在我的WAR中加入这个JAR只能打破更多的东西。
我希望有任何帮助来消除此错误。
感谢。
其他信息:
添加jaxws-rt.jar后,无论是否捕获InaccessibleWSDLException,我都会在所有服务上得到此信息:
java.lang.ClassNotFoundException: com.sun.xml.stream.buffer.XMLStreamBuffer
答案 0 :(得分:4)
问题可能是您要导入以com.sun.
开头的课程。这通常很糟糕:Why Developers Should Not Write Programs That Call 'sun' Packages
此类未记录为JAX-WS规范的一部分,因此我希望此类是Glassfish中JAX-WS实现的一部分;它不太可能出现在任何其他实现中,如果您希望代码可移植,则不应引用它。我建议你改为WebServiceException
(我认为是父类型)。
答案 1 :(得分:1)
你需要添加所有WSDL依赖项,我不确定它们是什么,但是流缓冲区看起来像是,可以在这里找到jar:
http://download.java.net/maven/1/com.sun.xml.stream.buffer/jars/
它适用于glassfish,因为它默认安装了所有这些jar,而Tomcat没有。