You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Weblogic 10运行时出现java.lang.NoSuchMethodError: org.joda.time.DateTime.now()异常

解决Weblogic 10中Joda-time的NoSuchMethodError异常

这个异常我碰到过好多次,根源其实特别明确:Weblogic 10默认内嵌了一个旧版本的Joda-time(大概率是1.x系列),而你的应用用的是2.9.9版本。Weblogic的类加载机制会优先加载服务器自带的类库,导致你的代码调用DateTime.now()时,实际调用的是旧版本里的DateTime类——但这个方法是Joda-time 2.x才新增的,1.x根本没有,所以直接抛出了NoSuchMethodError。

下面给你几个可行的解决方案,按推荐程度排序:

方案1:配置Web应用优先加载自身的Joda-time包(最推荐)

这是最安全的做法,只影响你的应用,不会干扰Weblogic上的其他服务。你需要在Web应用的WEB-INF/weblogic.xml文件中添加类加载优先级配置:

<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd">
    <!-- 保留你的原有配置 -->
    <container-descriptor>
        <prefer-application-packages>
            <package-name>org.joda.time.*</package-name>
            <package-name>org.joda.convert.*</package-name> <!-- 如果用到了convert相关类也加上 -->
        </prefer-application-packages>
    </container-descriptor>
</weblogic-web-app>

配置完成后,Weblogic会优先加载你应用WEB-INF/lib下的joda-time-2.9.9.jar里的类,而不是服务器自带的旧版本。

方案2:替换Weblogic自带的Joda-time jar(谨慎使用)

如果你的Weblogic服务器上所有应用都需要用Joda-time 2.9.9,可以考虑替换服务器自带的旧jar,但一定要先备份操作:

  1. 找到Weblogic安装目录下的旧Joda-time jar,一般在$WL_HOME/modules/org.joda.time_*.jar路径下;
  2. 把这个旧jar重命名(比如加个.bak后缀),然后把你的joda-time-2.9.9.jar放到同一个目录;
  3. 重启Weblogic服务器。

注意:这个操作可能影响其他依赖旧版本Joda-time的应用,一定要先在测试环境验证!

方案3:代码兼容调整(临时应急)

如果暂时没法改配置或替换jar,可以修改代码,把所有DateTime.now()替换成new DateTime()——这个写法在Joda-time 1.x和2.x里都能正常工作,因为new DateTime()默认就是获取当前时间。但这只是临时方案,长期还是建议解决类加载冲突的根本问题。

额外排查步骤

如果你不确定是不是类加载冲突,可以在代码里加一行日志,打印加载的DateTime类的来源:

System.out.println("Loaded DateTime class from: " + DateTime.class.getProtectionDomain().getCodeSource().getLocation());

运行后看输出的jar路径,就能明确是加载了服务器的旧jar还是应用的新jar了。

内容的提问来源于stack exchange,提问作者ACV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:24:25