Kje*_*din 4 war jodatime nosuchmethoderror maven
我有一个maven web app项目,我使用JodaTime.JodaTime不是在我的maven项目中直接引用的,而是传递依赖项的一部分.换句话说,我的网络应用程序战争,我的另一个项目作为直接依赖,并且该jar包含JodaTime.
执行这两行后我收到错误.虽然编译得很好.
DateTime firstDate = new DateTime();
firstDate = firstDate.withYear(2016);
Run Code Online (Sandbox Code Playgroud)
这是我的错误:
java.lang.NoSuchMethodError: org.joda.time.DateTime.withYear(I)Lorg/joda/time/DateTime;
Run Code Online (Sandbox Code Playgroud)
我知道,如果我编译并运行不同版本的库,就会发生这类错误,就像这个答案所说的那样,但withYear()自从2006年以来JodaTime 1.3已经存在,我无法看到我可以导入一个旧的版本.我甚至检查了我的最终war文件,并且唯一存在的JodaTime库是2.9.2.
如果我创建一个main-method片段,并且在eclipse中的同一个项目中运行它,那么这两行运行正常.它们只在编译成war文件时失败,并从我的weblogic 10.3.2服务器运行.
有没有人知道如何继续调试这个?
use*_*849 11
WebLogic 10.3.6在类路径中包含此内容:
joda.time_1.2.1.0.jar
这比缺少方法的1.3早.
您的代码编译,这表明您的应用程序的类路径至少有Joda 1.3.
因此我怀疑这是一个WebLogic类路径问题.当您的应用程序使用同样位于WebLogic类路径上的库时,您需要告诉WebLogic使用哪个库.你用中的prefer-application-packages元素来做到这一点src/main/webapp/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.3/weblogic-web-app.xsd">
<context-root>myApp</context-root>
<container-descriptor>
<prefer-application-packages>
<package-name>org.joda.time.*</package-name>
<package-name>org.slf4j.*</package-name>
<package-name>org.slf4j.impl.*</package-name>
<package-name>org.slf4j.spi.*</package-name>
<!-- others here -->
</prefer-application-packages>
</container-descriptor>
<!-- rest of weblogic.xml here -->
</weblogic-web-app>
Run Code Online (Sandbox Code Playgroud)
WebLogic有一个名为wls-cat的类路径分析工具,可帮助找到这些冲突,如本博文中所述.一个警告 - 不要只是将wls-cat的prefer-application-packages块复制到你的webapp中并认为你已经完成了 - 你需要逐个解决每个冲突.有时这意味着从您的webapp或使用范围中排除依赖关系provided.
| 归档时间: |
|
| 查看次数: |
2386 次 |
| 最近记录: |