我们在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专家都可以提供帮助吗?谢谢!
我们的部分网络应用WAR文件结构如下。