我正在使用IntelliJ 14
我想在我的项目中添加joda.time lib。 当我手动添加这个lib(将jar文件复制到lib存储库,并在Project Structure中添加引用)一切正常时,我可以在servlet中使用该库并在jsp中显示结果。
但是在第二步中我创建了相同的项目,但我正在使用带有pom.xml文件的maven。我添加了这个依赖项:
<dependencies>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.1</version>
</dependency>
</dependencies>
Maven自动下载lib,在我的项目结构中,每件事看起来都很好,我运行项目......没有错误,但是当我进入我的网页时,我的导航器出错了: / p>
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();
}
答案 0 :(得分:2)
如果pom.xml
明确设置为packaging type
,您应该检查war
。如果没有,maven将不会使用maven-war-plugin将您的应用程序与所有引用的库正确捆绑在一起,例如: joda-time
。
所以你应该:
<packaging>war</packaging>
另见参考资料: Maven Reference Book
答案 1 :(得分:2)
感谢MWiesner,您的回答。它有效。
我找到了另一个解决方案:
我不知道当maven导入lib时IntelliJ是否可以自动执行此操作?
答案 2 :(得分:0)
问题更有可能是在部署项目时不包括joda-time jar。您可以解压缩war文件,看看它是否在那里。我使用Eclipse安装Maven插件。因此,当我导出Maven项目时,所有Maven管理的jar都将包含在战争中。