1

私はSpring 3.1.0でRest Serviceを持つプロジェクトに取り組んでいます。リリース。Config クラスを使用して Bean をロードしています。提案どおり、cglib 2.2 および asm-3.3 jar を使用します。

これは websphere 8.5 では失敗し、次の例外があります。ただし、Apache Tomcat 7.0 では動作します。

[12/19/12 12:47:26:439 EST] 00000062 webapp        E com.ibm.ws.webcontainer.webapp.WebApp logServletError SRVE0293E: [Servlet Error]-[dispatcher]: java.lang.IllegalStateException: Cannot load configuration class: com.hps.config.ApplicationConfig
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.enhanceConfigurationClasses(ConfigurationClassPostProcessor.java:313)
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanFactory(ConfigurationClassPostProcessor.java:197)
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:681)
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:620)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:446)
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:384)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
    at com.ibm.ws.webcontainer.webapp.WebApp.notifyServletContextCreated(WebApp.java:1651)
    at com.ibm.ws.webcontainer.webapp.WebAppImpl.initialize(WebAppImpl.java:414)
    at com.ibm.ws.webcontainer.webapp.WebGroupImpl.addWebApplication(WebGroupImpl.java:88)
    at com.ibm.ws.webcontainer.VirtualHostImpl.addWebApplication(VirtualHostImpl.java:169)
    at com.ibm.ws.webcontainer.WSWebContainer.addWebApp(WSWebContainer.java:746)
    at com.ibm.ws.webcontainer.WSWebContainer.addWebApplication(WSWebContainer.java:634)
    at com.ibm.ws.webcontainer.component.WebContainerImpl.install(WebContainerImpl.java:426)
    at com.ibm.ws.webcontainer.component.WebContainerImpl.start(WebContainerImpl.java:718)
    at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1170)
    at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectStart(DeployedApplicationImpl.java:1370)
    at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:638)
    at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:968)
    at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:769)
    at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplicationDynamically(ApplicationMgrImpl.java:1364)
    at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:2169)


Caused by: java.lang.VerifyError: JVMVRFY007 final method overridden; class=net/sf/cglib/core/DebuggingClassWriter, method=visit(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V
    at java.lang.ClassLoader.defineClassImpl(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:262)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:69)
    at com.ibm.ws.classloader.CompoundClassLoader._defineClass(CompoundClassLoader.java:852)
    at com.ibm.ws.classloader.CompoundClassLoader.localFindClass(CompoundClassLoader.java:762)
    at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:585)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:627)
    at java.lang.J9VMInternals.verifyImpl(Native Method)
    at java.lang.J9VMInternals.verify(J9VMInternals.java:85)
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:162)
    at net.sf.cglib.core.AbstractClassGenerator.<init>(AbstractClassGenerator.java:38)
    at net.sf.cglib.core.KeyFactory$Generator.<init>(KeyFactory.java:127)
    at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:112)
    at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108)
    at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:104)
    at net.sf.cglib.proxy.Enhancer.<clinit>(Enhancer.java:69)
    at java.lang.J9VMInternals.initializeImpl(Native Method)
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:228)
    at org.springframework.context.annotation.ConfigurationClassEnhancer.newEnhancer(ConfigurationClassEnhancer.java:136)
    at org.springframework.context.annotation.ConfigurationClassEnhancer.enhance(ConfigurationClassEnhancer.java:109)
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.enhanceConfigurationClasses(ConfigurationClassPostProcessor.java:303)
    ... 109 more

この問題を修正する方法に関する提案。

cglib と asm jar の異なるバージョンで試してみましたが、うまくいきませんでした..

4

4 に答える 4

3

私はこの問題を解決することができます..

問題は Websphere 8.5 にあり、asm4.0 jar の独自のバージョンがあります。また、spring3.1 は asm3.3 とのみ互換性のある cglib2.2 jar を使用します。websphere の asm4.0 jar が原因です。回避策は、cglib2.2 jar の代わりに cglib-nodep jar を使用することです。

http://www.ibm.com/developerworks/forums/thread.jspa?messageID=14880673

于 2012-12-19T20:16:35.333 に答える
3

すべての依存 JAR ファイルがWEB-INF/lib、Sam-3.3 を含む WAR ファイルのディレクトリに保存されていることを確認してください。Maven を使用している場合は、この JAR を除外したり、誤ってスコープを に設定したりしないようにしてくださいprovided

ここで、WebSphere にアプリケーションをデプロイします。アプリケーション クラスのロード前にアプリケーションを最初に (親を最後に) 設定してください。WebSphere でこれを行うには、リンクManage Modulesを見つけてクラスのロード リンクを見つける必要があります。これで問題が解決するはずです。

更新:あなたが提供したリンクがすでに親を最後に使用することを示唆していることに気付きました. WebSphere では、これは必須であることがわかりました。そうしないと、これらの問題の多くに遭遇し、さらにアップグレードがはるかに簡単になります!

于 2012-12-19T20:26:39.463 に答える
0

cglib2.2 jar の代わりに cglib-nodep jar を使用します。また、lib から asm3.3 jar を削除することを忘れないでください。最初は、まだ問題を引き起こしている asm3.3 jar を削除していませんでした。

于 2016-12-06T19:27:03.397 に答える
0

これはWebsphere 8.5のバグ ( PM71336 ) だったようです。

このバグは、Websphere V8.5 フィックスパック 2 http://www-01.ibm.com/support/docview.wss?uid=swg24034672で修正されています。

于 2013-08-07T18:02:55.887 に答える