【发布时间】:2014-09-02 13:03:49
【问题描述】:
我们正在将一个内部框架集成到我们的 weblogic 应用程序中,并且遇到了部署问题。
使用的技术
- Weblogic 10.3.6 应用程序
- 春季 3.0
- Maven 2
- Eclipse J2EE
问题
在 weblogic 应用程序启动时,我们在初始化其中一个 bean 时收到以下 NoSuchMethodError。调用 org.joda.time (2.0) jar 中的类时会出现此错误。
Caused By: java.lang.NoSuchMethodError: org.joda.time.DateTimeZone.convertLocalToUTC(JZ)J
at org.joda.time.LocalDate.toDateTimeAtStartOfDay(LocalDate.java:715)
at org.joda.time.LocalDate.toDateTimeAtStartOfDay(LocalDate.java:690)
. . . excluded . . .
我们尝试过的事情
在谷歌搜索“NoSuchMethodError spring”后,许多问题似乎与 Spring 版本不兼容。打印依赖树后,使用的唯一 Spring 版本是 3.0。
-
谷歌搜索“NoSuchMethodError”通常会给出 JAR 地狱解决方案。
同一依赖项的多个版本。在做了一些maven依赖管理之后,唯一使用的joda-time jar是2.0。此外,本地存储库已清除任何不必要的 jar。
.war / runtime 的 lib 目录中可能没有包含正确的 jar。查看 WEB_INF/lib 目录后,唯一的 joda-time jar 是 2.0 版,其中包含所有适当的类文件
一个神秘的事情是 DateTimeZone.convertLocalToUTC(JZ)J 自 1.0 以来一直是 org.joda.time 项目的一部分,所以即使我们有不兼容的版本,仍然应该找到该方法,特别是如果类和包都可以找到。
最后,项目中没有其他 DateTimeZone 类(在 eclipse 中按 ctrl+shift+T 搜索),所以如果没有加载 org.joda.DateTimeZone 类,我很困惑正在加载哪个类。
问题:
- 谁能解释为什么找不到该方法?
- 是否有更多地方可以检查现有或冲突的 jar?
- 有没有办法通过 Eclipse 调试检查 LocalDate 类在运行时使用的 DateTimeZone 类?
【问题讨论】:
-
如果您的 服务器库 中有 joda 时间库,是否有可能拥有旧版本?如果您的类加载策略优先选择服务器库,这可能会导致问题。
-
您在 convertLocalToUTC 方法中传递了多少个参数?
-
@user2615897 已发布答案,如果有效,请查看
-
@Adi - 服务器库 (wlsserver_10.3/server/lib) 不包含任何 joda jars
标签: java eclipse spring maven jodatime