websphere中解决一个NoClassFoundException问题

近几年做的JavaEE项目都是以Tomcat为运行环境,已经很久没有碰过websphere了。


最近要在一个websphere项目中做点改动,由于改动很少,并且本地无法测试,就决定直接去QA环境修改并测试,以下是改动步骤(没有admin console的权限):

1. 运行脚本停止application server;

2. 到.ear目录下放弃新增加的.jar包,并修改.war/WEB-INF下几个应用的配置文件;

3. 重启application server;

满怀希望地检查SystemOut.log,但很失望地看到了NoClassFoundException,明明那个class就在新添加的jar包里。怀疑有什么配置文件指定了jar包的加载,但检查了.ear/META-INF/MANIFEST.MF文件,并没有指定jar包。然后后种怀疑,比如cache没有更新,被一个同名的包覆盖,配置成了multiple class loader等等,经历各种尝试,比如重新打ear包并部署,解压了.jar并把.class放置到.ear/.war/WEB-INF/classes下,反编译查看源代码等等,也不怕麻烦地私人问了几个公司外的websphere运维人员等终究不得其解。


就这样过了几天到今天,让公司的运维人员导出class loader view,所有的class loader一目了然,但新添加的jar包并不在其中。突然恍然大悟,原来还有个.ear/.war/META-INF/MANIFEST.MF文件没有检查,一查果然文件有列出所有需要加载的jar包。所以需要弄的就很简单了,直接修改MANIFEST.MF文件,重启问题解决了。


看来是近来tomcat用多了,都是直接扔WEB-INF/lib下习惯了。

你可能感兴趣的:(websphere)