[英]Java EE: NoClassDefFoundError org.joda.time.DateTime with IntelliJ and Maven
我正在使用IntelliJ 14
我想在我的項目中添加joda.time lib。 當我手動添加此lib(將jar文件復制到lib存儲庫,並在Project Structure中添加引用)一切正常時,我可以在servlet中使用該庫並在jsp中顯示結果。
但是在第二步中,我創建了相同的項目,但是我將maven與pom.xml文件一起使用。 我添加此依賴項:
<dependencies>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.1</version>
</dependency>
</dependencies>
Maven自動下載lib,在我的項目結構中,一切看起來都很好,我運行了項目……沒有錯誤,但是當我轉到網頁時,導航器中出現錯誤:
java.lang.NoClassDefFoundError: org/joda/time/DateTime
com.sdzee.servlets.ServletTest.doGet(ServletTest.java:47)
javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
該項目是完全相同的,我只是使用Maven來使用lib。
你有想法嗎?
以我的Servlet第47行為例:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
DateTime dt = new DateTime();
Integer jourDuMois = dt.getDayOfMonth();
}
如果packaging type
顯式設置為war
則應檢入pom.xml
。 否則,maven將不會使用maven-war-plugin將您的應用程序正確地與所有引用的庫捆綁在一起,例如joda-time
。
所以你應該有:
<packaging>war</packaging>
另請參閱參考: Maven參考書
感謝MWiesner,您的回答。 這行得通。
我找到了另一個解決方案:
我不知道當maven導入lib時,IntelliJ是否可以自動執行此操作?
問題很可能在您部署項目時不包含joda-time jar。 您可以解壓縮war文件,然后查看是否存在。 我使用的是Eclipse,它安裝了Maven插件。 因此,當我導出Maven項目時,戰爭中將包含所有Maven管理的jar。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.