weblogic8上jar包加载问题

在weblogic8环境中使用Apache Commons Email时遇到Java Mail API缺失的问题,由于JDK版本为1.4,导致类加载错误。通过分析发现,`javax.mail.internet.InternetAddress.validate()`方法未找到,原因是多个jar包(包括j2ee.jar和weblogic.jar)中存在同名类,但缺少相应方法。解决方法是调整`startWebLogic.sh`的CLASSPATH,确保mail.jar优先加载,避免加载含有冲突类的其他jar包。修改启动脚本并重启weblogic服务后,问题得到解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    在weblogic8上要用Java Mail,引入了apache的commons-email-1.2.jar,因为weblogic8上用的JDK版本是1.4,所以没有Java Mail的API,需要引入mail.jar,然而在运行的时候,抛出了下面的异常

java.lang.NoSuchMethodError: javax.mail.internet.InternetAddress.validate()V

 

原因在于apache的commons-emial-1.2.jar中的代码调用了javax.mail.internet.InternetAddress这个类,而这个类应该在mail.jar中,反编译了mail.jar发现InternetAddress中有validate这个方法,经过调试发现,还有j2ee.jar和weblogic.jar这两个jar包中都有该类的class,而且都没有validate这个方法,所以现在问题是要让weblogic启动的时候加载mail.jar,而不要加载j2ee.jar或者weblogic.jar。

 

由于weblogic.jar是系统级别的jar包,不是放在app的lib目录下的,最后解决方法是修改startWebLogic.sh文件的CLASSPATH加载顺序

 

CLASSPATH="/usr/local/bea_axa_dev/user_projects/domains/mydomain/mail.jar:${WEBLOGIC_CLASSPATH}:${POINTBASE_CLASSPATH}:${JAVA_HOME}/jre/lib/rt.
jar:${WL_HOME}/server/lib/webservices.jar:${CLASSPATH}"
重启weblogic后,运行正常了。
注:如果有几个jar包同时都有相同的包名和相同的类名,那么weblogic会以第一次加载的为准,以后加载其他jar包的时候,有相同的类,则不会再加载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值