Tomcat找不到类“InaccessibleWSDLException”,glassfish可以

时间:2011-03-26 17:16:37

标签: java tomcat wsdl glassfish webservice-client

我正在使用Java中的webservices,在打开端口并调用服务之后,我尝试捕获“com.sun.xml.ws.wsdl.parser.InaccessibleWSDLException”。

这在我的开发Glassfish v2服务器上运行良好,但是当我将WAR文件转移到Tomcat时,我得到了一个N​​oClassDefFoundError:

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

2 个答案:

答案 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没有。