在WebLogic 12c中,即使存在jar,也会抛出ClassNotFound

时间:2015-10-23 15:18:38

标签: weblogic classloader

我在WebLogic 12c中的托管服务器上部署了WAR文件。所有需要的第三方JAR都放在WEB-INF / lib中。顺便说一下,同样的WAR在WebSphere和Tomcat中运行良好。当我运行应用程序时,它报告无法找到某个类,这是在WEB-INF / lib下的jar文件中。

这个类绝对不会被安装了WebLogic的类所遮蔽。所以我的第一个问题是为什么即使在WEB-INF / lib下的JAR文件中也没有加载类。

然后我想也许我可以把JAR放到$ DOMAIN_DIR / lib下的系统类路径中,但是会发生同样的错误。我尝试使用classloader分析工具来定位类,它显示了可以在$ DOMAIN_DIR / lib下的jar文件下找到的类。然后我很困惑为什么抛出ClassNotFoundException。

我必须承认这是我第一次根据客户的请求使用WebLogic作为应用服务器。所以我不是这方面的专家。如果有人能帮助我解决这个问题,我们将不胜感激。

2 个答案:

答案 0 :(得分:1)

使用weblogic.xml文件中的prefer-web-inf-classes标记确保WebLogic不会覆盖类路径上其他位置的jar。

有关详细信息,请参阅此页:

https://docs.oracle.com/cd/E24329_01/web.1211/e21049/weblogic_xml.htm#WBAPP600

答案 1 :(得分:0)

识别正在加载哪个jar文件的一个好方法是使用JVM属性: -verbose:class

如果最终从你的jar文件中加载它,那么可能是树类加载问题。