2011-03-26 114 views
0

我正在使用Java中的webservices,並且在打開端口並調用服務之後,我試圖捕獲「com.sun.xml.ws.wsdl.parser.InaccessibleWSDLException」。Tomcat無法找到類「InaccessibleWSDLException」,glassfish可以

這工作得很好我的開發GlassFish v2中的服務器上,但是當我轉移我的WAR文件到Tomcat,我得到了一個N​​oClassDefFoundError的:

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

我做了一些google搜索,並發現該JAR jaxws- rt.jarInaccessibleWSDLException類。但是在我的戰爭中包括這個JAR只會讓更多的事情崩潰。

我將不勝感激任何幫助消除此錯誤。

謝謝。

附加信息:

加入JAXWS-rt.jar中的後,我得到這個的所有服務,無論我是否趕上InaccessibleWSDLException與否:

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

它打破了什麼更多的東西? – asgs 2011-03-26 17:20:16

+0

請參閱附加信息。謝謝。 – Ali 2011-03-26 17:31:23

+0

您在類路徑中缺少另一個依賴項'streambuffer-x.xx.jar'。我猜Glassfish會自動照顧這些依賴關係。 – asgs 2011-03-26 17:35:54

回答

1

您需要添加的所有WSDL依賴關係,我不知道它們是什麼,但流緩衝區看起來是,罐子可以在這裏找到:

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

它在glassfish中工作,因爲它具有默認安裝的所有這些jar,而Tomcat則沒有。

+0

是的,Glassfish在.. \ glassfish-v2ur2 \ lib文件夾中默認包含所有這些JAR文件。我最終複製了webservices-rt.jar,它工作。至少現在。我希望沒有任何其他的依賴。如果有的話,我會複製整個glassfish-v2ur2 \ lib。 – Ali 2011-03-26 17:57:00

+0

此外,可能發生流緩衝區異常,因爲jaxws-rt.jar存在兼容性問題。 webservices-rt.jar沒有這樣的問題。不過謝謝你的回答。 – Ali 2011-03-26 17:58:03

+0

流緩衝區異常是因爲webservices-rt.jar包含它,現在你複製它tomcat可以找到它。 – Miquel 2011-03-26 18:03:11

4

問題可能是您正在導入一個以com.sun.開頭的課程。這通常是不好的:Why Developers Should Not Write Programs That Call 'sun' Packages

這個類沒有記錄爲JAX-WS規範的一部分,所以我期望這個類是Glassfish中JAX-WS實現的一部分;它不太可能出現在任何其他實現中,如果您希望代碼具有便攜性,則不應引用它。我建議你趕上WebServiceException而不是(我相信是父類型)。

+0

謝謝,這個類可能是Glassfish特定的,因爲我在glassfish-v2ur2 \ lib中找到它。更改對「sun」包的引用可能需要一些工作,因爲我們已經處於部署階段,但感謝鏈接。 – Ali 2011-03-26 18:03:03