Spring Integration - Websphere中的ClassNotFoundException

时间:2014-03-11 02:28:00

标签: java spring websphere classloader spring-integration

Spring集成项目在Eclipse / Tomcat中本地正常工作。

部署到Websphere时,我从Spring Integration类中获得了类加载器问题:

java.lang.NoClassDefFoundError: org.springframework.integration.message.ErrorMessage
    at org.springframework.integration.channel.MessagePublishingErrorHandler.handleError(MessagePublishingErrorHandler.java:83)
    at org.springframework.integration.util.ErrorHandlingTaskExecutor$1.run(ErrorHandlingTaskExecutor.java:55)
    at org.springframework.scheduling.commonj.DelegatingWork.run(DelegatingWork.java:61)
    at com.ibm.ws.asynchbeans.J2EEContext.run(J2EEContext.java:1178)
    at com.ibm.ws.asynchbeans.WorkWithExecutionContextImpl.go(WorkWithExecutionContextImpl.java:199)
    at com.ibm.ws.asynchbeans.CJWorkItemImpl.run(CJWorkItemImpl.java:236)
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1700)
Caused by: java.lang.ClassNotFoundException: org.springframework.integration.message.ErrorMessage
    at java.net.URLClassLoader.findClass(URLClassLoader.java:434)
    at com.ibm.ws.bootstrap.ExtClassLoader.findClass(ExtClassLoader.java:204)
    at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:699)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:678)
    at com.ibm.ws.bootstrap.ExtClassLoader.loadClass(ExtClassLoader.java:119)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:661)
    at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:62)
    at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:58)
    at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:598)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:661)
    at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:566)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:661)
    ... 7 more

看起来应用程序实际上正在工作,但输出这些错误,但我不喜欢它的想法。

所有弹簧罐都在我的类路径中。我尝试将类加载器更改为Parent_Last,但还有其他一些问题

Websphere是否还需要其他设置?

2 个答案:

答案 0 :(得分:0)

一般来说,你所描述的内容毫无意义; ErrorMessageMessagePublishingErrorHandler位于同一个广告文件中。

所以,这意味着它可能是一个类加载器问题。最好的猜测是你从不同类加载器中的两个不同的jar加载ErrorMessage

使用-verbose运行JVM,并检查从哪些罐加载哪些类。

答案 1 :(得分:0)

尝试从WAS控制台为您的应用程序使用ClassLoader order