Ehcache + Spring 4 + Weblogic 12c = ClassNotFoundException

时间:2016-06-28 17:46:39

标签: spring ehcache classnotfoundexception

我想我在stackoverflow上浏览了关于这个问题的一切,但我无法解决它 假设:

  • 我尝试了4.2.5,4.2.6,4.3.0 spring版本
  • 我尝试了2.9.0到最后的2.10.2.2.21 ehcache版本
  • 我有我的pom(以及由此产生的战争)春天背景,春天语境支持,ehcache罐子
  • 我正在部署一个包含WAR的EAR,包括在其/ WEB-INF / lib目录中所有需要上面的jar
  • 我的EAR完全适用于我的3开发环境(Windows 7,OSX和Ubuntu上的eclipse + Weblogic 12c)

当我尝试在基于Weblogic 12.2.1.0.0的测试环境中部署相同的EAR时,遇到这个该死的堆栈跟踪:

SEVERE: Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping#0': Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: net.sf.ehcache.CacheManager
....
Caused By: java.lang.ClassNotFoundException: net.sf.ehcache.CacheManager
at com.oracle.classloader.PolicyClassLoader.loadClass(PolicyClassLoader.java:267)
at com.oracle.classloader.weblogic.LaunchClassLoader.loadClass(LaunchClassLoader.java:62)
at java.lang.ClassLoader.loadClass(ClassLoader.java:805)
at java.lang.J9VMInternals.prepareClassImpl(Native Method)
at java.lang.J9VMInternals.prepare(J9VMInternals.java:291)

我还尝试以不同的方式打包我的EAR,建立一个瘦小的战争并将所有的罐子包括在EAR库中,但它没有用。
我从未经历过像这样的类加载问题......
提前谢谢。

1 个答案:

答案 0 :(得分:0)

我遇到类似的问题,Weblogic没有从库中找到一个类,因为它实际上正在使用已经在其类路径中的该库的另一个版本。

首先,确保它在某处没有不同版本的ehCache,如果是这样,您可以告诉Weblogic将您应用中嵌入的版本用于WebLogic部署描述符文件中的特定包({{ 1}}):

WEB-INF/weblogic.xml

请参阅https://docs.oracle.com/cd/E24329_01/web.1211/e21049/weblogic_xml.htm#WBAPP663