在Websphere 8.5中替换lib会导致NoClassDefFoundError

时间:2013-12-04 17:06:02

标签: java websphere classloader application-server

由于各种原因暂时阻止我进行完全重新编译和重新部署,我想在Websphere中的应用程序上热交换.jar库。我想将库 xyz-1.7.jar 替换为以前的版本号 xyz-1.4.jar

我将.jar文件放在

/AppServer/profiles/$AppServer/installedApps/$Cell/$App.ear/

并将其替换为以前的版本,然后使用

重新启动服务器
./startServer.sh $myServer

一旦启动并运行,我登录到应用程序就会发现它正在抛出NoClassDefFoundErrors。

我在Websphere中启用了“类加载跟踪”设置,发现两个版本的.jar lib都没有加载。

我是否在正确的位置更改了.jar库?

我从Tomcat和JBoss的一些经验中了解到,我需要修改未爆炸的.ear文件而不是爆炸的部署目录,但Websphere对我来说是新手。是否有可能做我正在尝试的事情?

1 个答案:

答案 0 :(得分:1)

首先从控制台检查设置“企业应用程序>应用程序名称>类加载和更新检测> 在更新应用程序文件时重新加载类启用并且更新文件的轮询间隔设置为正值。

如果没有启用它并重新启动应用程序。

然后您可以更新 installedApps 中的jar,注意读取文件权限。

但是,为什么不使用“替换或添加单个文件”作为WAS控制台的“更新”选项? 只需在“指定以已安装的应用程序存档文件开头的路径指定要替换或添加的文件”文本内的EAR中输入jar的相对路径,即可完成。