2012-11-26 30 views
7

我試過的CentOS 6.3下部署JAX-WS Web服務 - >阿帕奇 - > Tomcat的5.5Tomcat的:無法解析運行時描述符

我讀搜索與谷歌幾個小時,問了我所有的朋友,還試圖在stackoverflow找到解決方案,但無濟於事。有人能幫助我嗎?先謝謝你。

我收到以下錯誤信息:

Nov 26, 2012 12:36:52 PM com.sun.xml.ws.transport.http.servlet.WSServletContextListener parseAdaptersAndCreateDelegate 
SEVERE: WSSERVLET11: failed to parse runtime descriptor: java.lang.IllegalAccessError: class com.sun.xml.ws.assembler.MetroClientTubelineAssemblyContextImpl cannot access its superclass com.sun.xml.ws.assembler.DefaultClientTubelineAssemblyContext 
java.lang.IllegalAccessError: class com.sun.xml.ws.assembler.MetroClientTubelineAssemblyContextImpl cannot access its superclass com.sun.xml.ws.assembler.DefaultClientTubelineAssemblyContext 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) 
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    at com.sun.xml.ws.assembler.MetroTubelineAssemblerFactoryImpl.doCreate(MetroTubelineAssemblerFactoryImpl.java:63) 
    at com.sun.xml.ws.api.pipe.TubelineAssemblerFactory.create(TubelineAssemblerFactory.java:109) 
    at com.sun.xml.ws.server.WSEndpointImpl.(WSEndpointImpl.java:170) 
    at com.sun.xml.ws.server.EndpointFactory.create(EndpointFactory.java:306) 
    at com.sun.xml.ws.server.EndpointFactory.create(EndpointFactory.java:301) 
    at com.sun.xml.ws.server.EndpointFactory.createEndpoint(EndpointFactory.java:147) 
    at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:574) 
    at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:557) 
    at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parseAdapters(DeploymentDescriptorParser.java:260) 
    at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parse(DeploymentDescriptorParser.java:152) 
    at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.parseAdaptersAndCreateDelegate(WSServletContextListener.java:131) 
    at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contextInitialized(WSServletContextListener.java:152) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3795) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4252) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544) 
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:884) 
    at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:737) 
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:498) 
    at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1271) 
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:301) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120) 
    at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1306) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1570) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1579) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1559) 
    at java.lang.Thread.run(Thread.java:662) 
Nov 26, 2012 12:36:52 PM org.apache.catalina.core.StandardContext listenerStart 
SEVERE: Exception sending context initialized event to listener instance of class com.sun.xml.ws.transport.http.servlet.WSServletContextListener 
com.sun.xml.ws.transport.http.servlet.WSServletException: WSSERVLET11: failed to parse runtime descriptor: java.lang.IllegalAccessError: class com.sun.xml.ws.assembler.MetroClientTubelineAssemblyContextImpl cannot access its superclass com.sun.xml.ws.assembler.DefaultClientTubelineAssemblyContext 
    at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.parseAdaptersAndCreateDelegate(WSServletContextListener.java:141) 
    at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contextInitialized(WSServletContextListener.java:152) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3795) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4252) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544) 
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:884) 
    at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:737) 
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:498) 
    at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1271) 
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:301) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120) 
    at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1306) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1570) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1579) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1559) 
    at java.lang.Thread.run(Thread.java:662) 
Caused by: java.lang.IllegalAccessError: class com.sun.xml.ws.assembler.MetroClientTubelineAssemblyContextImpl cannot access its superclass com.sun.xml.ws.assembler.DefaultClientTubelineAssemblyContext 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) 
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    at com.sun.xml.ws.assembler.MetroTubelineAssemblerFactoryImpl.doCreate(MetroTubelineAssemblerFactoryImpl.java:63) 
    at com.sun.xml.ws.api.pipe.TubelineAssemblerFactory.create(TubelineAssemblerFactory.java:109) 
    at com.sun.xml.ws.server.WSEndpointImpl.(WSEndpointImpl.java:170) 
    at com.sun.xml.ws.server.EndpointFactory.create(EndpointFactory.java:306) 
    at com.sun.xml.ws.server.EndpointFactory.create(EndpointFactory.java:301) 
    at com.sun.xml.ws.server.EndpointFactory.createEndpoint(EndpointFactory.java:147) 
    at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:574) 
    at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:557) 
    at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parseAdapters(DeploymentDescriptorParser.java:260) 
    at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parse(DeploymentDescriptorParser.java:152) 
    at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.parseAdaptersAndCreateDelegate(WSServletContextListener.java:131) 
    ... 17 more 
Nov 26, 2012 12:36:52 PM org.apache.catalina.core.StandardContext start 
SEVERE: Error listenerStart 
Nov 26, 2012 12:36:52 PM org.apache.catalina.core.StandardContext start 
SEVERE: Context [/lws] startup failed due to previous errors 
Nov 26, 2012 12:36:52 PM com.sun.xml.ws.transport.http.servlet.WSServletContextListener contextDestroyed 
INFO: WSSERVLET13: JAX-WS context listener destroyed 

回答

2

看看文檔:

http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/IllegalAccessError.html 拋出該異常當應用程序試圖訪問或修改一個字段,或者調用一個方法,它無法訪問。通常,這個錯誤被編譯器捕獲;如果某個類的定義發生了不兼容的更改,則只能在運行時發生此錯誤。

換句話說,MetroClientTubelineAssemblyContextImpl被編譯爲超類DefaultClientTubelineAssemblyContext版本的子類,但似乎在運行時發生了變化。

您可能發生的情況是類路徑中有兩個Jar,它們是DefaultClientTubelineAssemblyContext或MetroClientTubelineAssemblyContextImpl中的一個。你應該尋找哪些罐子有這些類,並試圖讓只有一個加載。

尋找應用程序Web歸檔文件的WEB-INF/lib中的jar以及$ TOMCAT_HOME/lib文件夾中的jar來檢查是否找到任何重複項。