作爲測試項目,我使用wsdl和jax-ws創建了一個非常簡單的WebService。客戶端運行得很好,如果它部署在GlassFish的web應用程序,但如果我在Eclipse中直接啓動相同(WebService-)代碼,我得到以下錯誤:JAX-WS和版本衝突
WARNUNG: Input Action on WSDL operation AddNumbers and @Action on its associated Web Method addNumbers did not match and will cause problems in dispatching the requests
Exception in thread "main" java.lang.NoClassDefFoundError: org/glassfish/ha/store/api/BackingStoreException
at com.sun.xml.ws.rx.mc.runtime.McConfigurationFactory.createInstance(McConfigurationFactory.java:66)
at com.sun.xml.ws.rx.mc.runtime.McTubeFactory.createTube(McTubeFactory.java:68)
at com.sun.xml.ws.assembler.TubeCreator.createTube(TubeCreator.java:84)
at com.sun.xml.ws.assembler.TubelineAssemblerFactoryImpl$MetroTubelineAssembler.createClient(TubelineAssemblerFactoryImpl.java:130)
at com.sun.xml.ws.client.Stub.createPipeline(Stub.java:228)
at com.sun.xml.ws.client.Stub.<init>(Stub.java:205)
at com.sun.xml.ws.client.Stub.<init>(Stub.java:178)
at com.sun.xml.ws.client.sei.SEIStub.<init>(SEIStub.java:85)
at com.sun.xml.ws.client.WSServiceDelegate.createEndpointIFBaseProxy(WSServiceDelegate.java:608)
at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:348)
at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:330)
at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:312)
at javax.xml.ws.Service.getPort(Service.java:134)
at mnm.namedesdienstes.webservice.service.NameDesDienstesService.getNameDesDienstesPortTypePort(NameDesDienstesService.java:56)
at webserviceClient.NameDesDienstesClient.myTest(NameDesDienstesClient.java:12)
at webserviceClient.NameDesDienstesClient.main(NameDesDienstesClient.java:25)
Caused by: java.lang.ClassNotFoundException: org.glassfish.ha.store.api.BackingStoreException
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 16 more
一些研究,我發現它後必須與某些庫文件的不同版本有關。所以現在我的問題是,我如何「修復」我的eclipse Java執行正確運行我的web服務客戶端?我發現了一些提示,將一些jar複製到一個背書目錄,但哪個jar放到哪個目錄中:-)
我使用Max OS 10.6.8,Eclipse Project使用JVM 1.6。我的Mac Java版本是
xmacbook:~ cstraube$ java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03-384-10M3425)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02-384, mixed mode)
UPDATE:我第一次嘗試(感謝來自remipod的鏈接)我執行以下步驟:
- 獲得批准lirbaries的目錄與
System.out.println(System.getProperty("java.endorsed.dirs"));
- 接下來,我將兩個文件JAXWS2.1.7-20090419.jar和JAXB2_20080513.jar(均爲版本2.1.7)複製到此目錄中
- 不幸的是,我仍然得到相同的錯誤
從此文件創建您自己的BackupStoreException: http://svn-mirror.glassfish.org/glassfish-svn/trunk/api/ha-api/src/main/java/org/glassfish/ha/store/ api/BackingStoreException.java爲我工作。 –