【问题标题】:Tomcat cannot find class "InaccessibleWSDLException", glassfish canTomcat 找不到类“InaccessibleWSDLException”,glassfish 可以
【发布时间】:2011-03-26 17:16:37
【问题描述】:

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

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

java.lang.NoClassDefFoundError: com/sun/xml/ws/wsdl/parser/InaccessibleWSDLException

我用 Google 搜索了一下,发现 JAR jaxws-rt.jarInaccessibleWSDLException 类。但是在我的 WAR 中包含这个 JAR 只会破坏更多的东西。

对于消除此错误的任何帮助,我将不胜感激。

谢谢。

其他信息:

添加 jaxws-rt.jar 后,无论我是否捕获 InaccessibleWSDLException,我都会在所有服务上得到这个:

java.lang.ClassNotFoundException: com.sun.xml.stream.buffer.XMLStreamBuffer

【问题讨论】:

  • 请查看附加信息。谢谢。
  • 您的类路径中缺少另一个依赖项streambuffer-x.xx.jar。我猜 Glassfish 会自动处理这些依赖关系。
  • 但在我添加 jaxws-rt.jar 之前,其他服务(我没有捕获 InaccessibleWSDLException)工作正常。他们不需要streambuffer-x.xx.jar。现在即使他们不工作。我会尝试添加你提到的罐子。

标签: java tomcat wsdl glassfish webservice-client


【解决方案1】:

问题可能是您正在导入一个以com.sun. 开头的类。这通常很糟糕:Why Developers Should Not Write Programs That Call 'sun' Packages

这个类没有记录为 JAX-WS 规范的一部分,所以我希望这个类是 Glassfish 中 JAX-WS 实现的一部分;它不太可能出现在任何其他实现中,如果您希望代码可移植,则不应引用它。我建议你改用WebServiceException(我相信它是父类型)。

【讨论】:

  • 谢谢,这个类可能是 Glassfish 特有的,因为我在 glassfish-v2ur2\lib 的一个 jar 中找到了它。更改对“sun”包的引用可能需要一些工作,因为我们已经处于部署阶段,但感谢您提供的链接。
【解决方案2】:

您需要添加所有 WSDL 依赖项,我不确定它们是什么,但流缓冲区看起来像,jar 可以在这里找到:

http://download.java.net/maven/1/com.sun.xml.stream.buffer/jars/

它可以在 glassfish 中使用,因为它默认安装了所有这些 jar,而 Tomcat 没有。

【讨论】:

  • 是的,Glassfish 在 ..\glassfish-v2ur2\lib 文件夹中拥有所有这些 JAR 文件。我最终复制了 webservices-rt.jar 并且它起作用了。至少现在。我希望没有任何其他依赖项。如果有,我将复制整个 glassfish-v2ur2\lib。
  • 另外,流缓冲区异常可能是因为 jaxws-rt.jar 存在兼容性问题。 webservices-rt.jar 没有此类问题。不过,感谢您的回答。
  • 流缓冲区异常是因为webservices-rt.jar包含它,现在你复制它tomcat可以找到它。
猜你喜欢
  • 2015-07-15
  • 2013-11-02
  • 2018-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-29
  • 2017-10-17
  • 1970-01-01
相关资源
最近更新 更多