joda的new DateTime(int,int,int,int,int,int)方法存在问题

7

你好,我正在使用Weblogic 11g创建war应用程序,但是在joda time的方法上遇到了问题。

new DateTime(int, int, int, int, int, int);

出现了NoSuchMethodException异常,但是当我使用new DateTime(int, int, int, int, int, int, int, int);(多一个int)时,它能够正常工作。

DateTime start = new DateTime(1990, 1, 1, 0, 0, 0); this doesnt works
DateTime start = new DateTime(1990, 1, 1, 0, 0, 0, 0); this works

有没有想法出了什么问题? 谢谢。

你能展示一下错误的堆栈跟踪吗? - Jonas
java.lang.NoSuchMethodError: org.joda.time.DateTime.<init>(IIIIII)V 这是我所拥有的全部内容。 - hudi
根据您的调用,六个参数的构造函数可以工作,但七个参数的构造函数不能。问题的第一部分不一致,因为它提到了五个和六个参数的构造函数。只是提供信息;我相信最后一部分是正确的,但您应该无论如何修复这个问题。 - Ray Toal
1个回答

6

在Joda-Time 2.0中添加了具有5和6个整数参数的构造函数。7个整数参数的构造函数已经存在很长时间了。

检查您使用的Joda-Time版本。

您可能正在使用早期版本。

更新 对于在JUnit中运行正常但部署在WebLogic时不起作用的评论,我只能坚持版本参数的论点。

在WebLogic中,检查您的jar文件(使用jar -tf)。查找旧的Joda-Time版本。也许WebLogic默认放置它们在那里。如果不在jar中,请查看WebLogic的容器类库。检查您的类路径或JRE扩展目录。尽可能地搜索每个地方,因为版本参数是合理的。否则如何出现NoSuchMethodError错误?


是的,我知道并且正在使用2.0版本。<!-- Joda Time --> <dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> <version>2.0</version> </dependency> - hudi
当我运行 JUnit 测试来测试这个方法时,它可以工作,但当我在 Weblogic 上部署它时,就会抛出异常。 - hudi
这是我能想到的唯一解释,@flash。像所有容器一样,WebLogic允许在war之外的JAR文件使用classpath。但在这种情况下,我希望war应该优先,但谁知道呢。我怀疑war的部署描述符不正确,但OP需要到处查看以防万一。 - Ray Toal
1
但是在Weblogic路径中,我发现了joda.time1.2.1.0。除了删除它之外,我如何从Weblogic路径中排除这个jar文件,或者如何告诉Weblogic使用我的jar文件呢?PS:当我删除这个jar文件时,它可以工作,谢谢大家,但我需要更优雅的解决方案。 - hudi
1
请查看此答案:https://dev59.com/8FzUa4cB1Zd3GeqP7Nkx#14936333。将此行添加到`weblogic.xml`文件中就可以完成:`wls:package-nameorg.joda.*</wls:package-name>`。这对我有效! - jelies
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接