我们在Weblogic 12.1.1上部署了一个OSGI Web应用程序WAR文件 . 它在启动时报告了以下错误 .

Caused by: java.lang.NoClassDefFoundError: Could not initialize class net.sf.cgl
ib.proxy.Enhancer
        at org.springframework.aop.framework.Cglib2AopProxy.createEnhancer(Cglib
2AopProxy.java:228)
        at org.springframework.aop.framework.Cglib2AopProxy.getProxy(Cglib2AopPr
oxy.java:170)
        at org.springframework.aop.framework.ProxyFactory.getProxy(ProxyFactory.
java:112)
        at org.springframework.osgi.service.util.internal.aop.ProxyUtils.createP
roxy(ProxyUtils.java:70)
        at org.springframework.osgi.service.util.internal.aop.ProxyUtils.createP
roxy(ProxyUtils.java:39)
        at org.springframework.osgi.service.importer.support.AbstractServiceProx
yCreator.createServiceProxy(AbstractServiceProxyCreator.java:107)
        at org.springframework.osgi.service.importer.support.OsgiServiceProxyFac
toryBean.createProxy(OsgiServiceProxyFactoryBean.java:182)
        at org.springframework.osgi.service.importer.support.AbstractServiceImpo
rterProxyFactoryBean.getObject(AbstractServiceImporterProxyFactoryBean.java:96)
        at org.springframework.osgi.service.importer.support.OsgiServiceProxyFac
toryBean.getObject(OsgiServiceProxyFactoryBean.java:126)
        at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.
doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:143)
        ... 64 more

在网络搜索之后,我们发现问题是由我们的网络应用程序(cglib 2.1.3)和Weblogic(cglib 2.2.0)之间的不兼容的软件包版本引起的 . 我们有限制升级我们的cglib版本,因此我们希望通过Weblogic配置使其工作 .

Wrong library version when moving web application from Tomcat to WebLogic建议在weblogic.xml中使用prefer-web-inf-classes元素 . 但是,它不起作用 . 一些谷歌资源表明这种方法可能不适用于OSGI Web应用程序 . 这是真的吗?任何Java / Weblogic专家都可以提供帮助吗?谢谢!

我们的Web应用程序WAR文件结构的一部分如下 .

  • WAR

  • WEB-INF

  • 配置

  • 日食

  • 配置

  • 功能

  • 插件

  • launch.ini

  • lib

  • org.eclipse.equinox.servletbridge_1.2.0.jar

  • web.xml

  • weblogic.xml