8

CentOS 6.3 -> Apache -> Tomcat 5.5 で JAX-WS Web サービスをデプロイしようとしました。

私は何時間もグーグルで検索して読み、友人全員に尋ね、またスタックオーバーフローで解決策を見つけようとしましたが、役に立ちませんでした。誰か助けてくれませんか?前もって感謝します。

次のエラー メッセージが表示されます。

2012 年 11 月 26 日 12:36:52 PM com.sun.xml.ws.transport.http.servlet.WSServletContextListener parseAdaptersAndCreateDelegate
SEVERE: WSSERVLET11: 実行時記述子の解析に失敗しました: java.lang.IllegalAccessError: クラス com.sun.xml.ws.assemblyr.MetroClientTubelineAssemblyContextImpl はそのスーパークラス com.sun.xml.ws.assemblyr.DefaultClientTubelineAssemblyContext にアクセスできません
java.lang.IllegalAccessError: クラス com.sun.xml.ws.assemblyr.MetroClientTubelineAssemblyContextImpl はそのスーパークラス com.sun.xml.ws.assemblyr.DefaultClientTubelineAssemblyContext にアクセスできません
    java.lang.ClassLoader.defineClass1(ネイティブメソッド)で
    java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) で
    java.lang.ClassLoader.defineClass(ClassLoader.java:615) で
    java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) で
    java.net.URLClassLoader.defineClass(URLClassLoader.java:283) で
    java.net.URLClassLoader.access$000 (URLClassLoader.java:58) で
    java.net.URLClassLoader$1.run(URLClassLoader.java:197) で
    java.security.AccessController.doPrivileged(ネイティブメソッド)で
    java.net.URLClassLoader.findClass(URLClassLoader.java:190) で
    java.lang.ClassLoader.loadClass(ClassLoader.java:306) で
    java.lang.ClassLoader.loadClass(ClassLoader.java:247) で
    com.sun.xml.ws.assemblyr.MetroTubelineAssemblerFactoryImpl.doCreate (MetroTubelineAssemblerFactoryImpl.java:63) で
    com.sun.xml.ws.api.pipe.TubelineAssemblerFactory.create (TubelineAssemblerFactory.java:109) で
    com.sun.xml.ws.server.WSEndpointImpl.(WSEndpointImpl.java:170) で
    com.sun.xml.ws.server.EndpointFactory.create(EndpointFactory.java:306) で
    com.sun.xml.ws.server.EndpointFactory.create(EndpointFactory.java:301) で
    com.sun.xml.ws.server.EndpointFactory.createEndpoint(EndpointFactory.java:147) で
    com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:574) で
    com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:557) で
    com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parseAdapters(DeploymentDescriptorParser.java:260) で
    com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parse(DeploymentDescriptorParser.java:152) で
    com.sun.xml.ws.transport.http.servlet.WSServletContextListener.parseAdaptersAndCreateDelegate(WSServletContextListener.java:131) で
    com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contextInitialized(WSServletContextListener.java:152) で
    org.apache.catalina.core.StandardContext.listenerStart (StandardContext.java:3795) で
    org.apache.catalina.core.StandardContext.start (StandardContext.java:4252) で
    org.apache.catalina.core.ContainerBase.addChildInternal (ContainerBase.java:760) で
    org.apache.catalina.core.ContainerBase.addChild (ContainerBase.java:740) で
    org.apache.catalina.core.StandardHost.addChild (StandardHost.java:544) で
    org.apache.catalina.startup.HostConfig.deployWAR (HostConfig.java:884) で
    org.apache.catalina.startup.HostConfig.deployWARs (HostConfig.java:737) で
    org.apache.catalina.startup.HostConfig.deployApps (HostConfig.java:498) で
    org.apache.catalina.startup.HostConfig.check (HostConfig.java:1271) で
    org.apache.catalina.startup.HostConfig.lifecycleEvent (HostConfig.java:301) で
    org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent (LifecycleSupport.java:120) で
    org.apache.catalina.core.ContainerBase.backgroundProcess (ContainerBase.java:1306) で
    org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren (ContainerBase.java:1570) で
    org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren (ContainerBase.java:1579) で
    org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run (ContainerBase.java:1559) で
    java.lang.Thread.run(Thread.java:662) で
2012 年 11 月 26 日 12:36:52 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: クラス com.sun.xml.ws.transport.http.servlet.WSServletContextListener のリスナー インスタンスにコンテキスト初期化イベントを送信する例外
com.sun.xml.ws.transport.http.servlet.WSServletException: WSSERVLET11: 実行時記述子の解析に失敗しました: java.lang.IllegalAccessError: クラス com.sun.xml.ws.assemblyr.MetroClientTubelineAssemblyContextImpl はそのスーパークラス com.sun にアクセスできません。 xml.ws.assemblyr.DefaultClientTubelineAssemblyContext
    com.sun.xml.ws.transport.http.servlet.WSServletContextListener.parseAdaptersAndCreateDelegate(WSServletContextListener.java:141) で
    com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contextInitialized(WSServletContextListener.java:152) で
    org.apache.catalina.core.StandardContext.listenerStart (StandardContext.java:3795) で
    org.apache.catalina.core.StandardContext.start (StandardContext.java:4252) で
    org.apache.catalina.core.ContainerBase.addChildInternal (ContainerBase.java:760) で
    org.apache.catalina.core.ContainerBase.addChild (ContainerBase.java:740) で
    org.apache.catalina.core.StandardHost.addChild (StandardHost.java:544) で
    org.apache.catalina.startup.HostConfig.deployWAR (HostConfig.java:884) で
    org.apache.catalina.startup.HostConfig.deployWARs (HostConfig.java:737) で
    org.apache.catalina.startup.HostConfig.deployApps (HostConfig.java:498) で
    org.apache.catalina.startup.HostConfig.check (HostConfig.java:1271) で
    org.apache.catalina.startup.HostConfig.lifecycleEvent (HostConfig.java:301) で
    org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent (LifecycleSupport.java:120) で
    org.apache.catalina.core.ContainerBase.backgroundProcess (ContainerBase.java:1306) で
    org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren (ContainerBase.java:1570) で
    org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren (ContainerBase.java:1579) で
    org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run (ContainerBase.java:1559) で
    java.lang.Thread.run(Thread.java:662) で
原因: java.lang.IllegalAccessError: クラス com.sun.xml.ws.assemblyr.MetroClientTubelineAssemblyContextImpl はそのスーパークラス com.sun.xml.ws.assemblyr.DefaultClientTubelineAssemblyContext にアクセスできません
    java.lang.ClassLoader.defineClass1(ネイティブメソッド)で
    java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) で
    java.lang.ClassLoader.defineClass(ClassLoader.java:615) で
    java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) で
    java.net.URLClassLoader.defineClass(URLClassLoader.java:283) で
    java.net.URLClassLoader.access$000 (URLClassLoader.java:58) で
    java.net.URLClassLoader$1.run(URLClassLoader.java:197) で
    java.security.AccessController.doPrivileged(ネイティブメソッド)で
    java.net.URLClassLoader.findClass(URLClassLoader.java:190) で
    java.lang.ClassLoader.loadClass(ClassLoader.java:306) で
    java.lang.ClassLoader.loadClass(ClassLoader.java:247) で
    com.sun.xml.ws.assemblyr.MetroTubelineAssemblerFactoryImpl.doCreate (MetroTubelineAssemblerFactoryImpl.java:63) で
    com.sun.xml.ws.api.pipe.TubelineAssemblerFactory.create (TubelineAssemblerFactory.java:109) で
    com.sun.xml.ws.server.WSEndpointImpl.(WSEndpointImpl.java:170) で
    com.sun.xml.ws.server.EndpointFactory.create(EndpointFactory.java:306) で
    com.sun.xml.ws.server.EndpointFactory.create(EndpointFactory.java:301) で
    com.sun.xml.ws.server.EndpointFactory.createEndpoint(EndpointFactory.java:147) で
    com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:574) で
    com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:557) で
    com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parseAdapters(DeploymentDescriptorParser.java:260) で
    com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parse(DeploymentDescriptorParser.java:152) で
    com.sun.xml.ws.transport.http.servlet.WSServletContextListener.parseAdaptersAndCreateDelegate(WSServletContextListener.java:131) で
    ... 17以上
2012 年 11 月 26 日 12:36:52 PM org.apache.catalina.core.StandardContext 開始
SEVERE: listenerStart エラー
2012 年 11 月 26 日 12:36:52 PM org.apache.catalina.core.StandardContext 開始
SEVERE: 以前のエラーが原因で、コンテキスト [/lws] の起動に失敗しました
2012 年 11 月 26 日 12:36:52 PM com.sun.xml.ws.transport.http.servlet.WSServletContextListener contextDestroyed
情報: WSSERVLET13: JAX-WS コンテキスト リスナーが破棄されました
4

1 に答える 1

3

ドキュメントを見てください:

http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/IllegalAccessError.html アプリケーションがフィールドにアクセスまたはフィールドを変更しようとした場合、またはアクセス権のないメソッドを呼び出そうとした場合にスローされますに。通常、このエラーはコンパイラによってキャッチされます。このエラーは、クラスの定義が非互換に変更された場合にのみ、実行時に発生する可能性があります。

つまり、MetroClientTubelineAssemblyContextImpl は、スーパークラス DefaultClientTubelineAssemblyContext のバージョンのサブクラスになるようにコンパイルされていましたが、実行時に変更されたようです。

おそらくあなたに起こっていることは、これら2つのクラスDefaultClientTubelineAssemblyContextまたはMetroClientTubelineAssemblyContextImplのいずれかを持つ2つのjarがクラスパスにあることです。これらのクラスを持つ jar を探して、1 つだけをロードするようにしてください。

アプリケーション Web アーカイブの WEB-INF/lib 内の jar と $TOMCAT_HOME/lib フォルダー内の jar を探して、重複がないかどうかを確認します。

于 2012-11-29T05:00:01.400 に答える