我正在使用 IntelliJ 14
我想在我的项目中添加 joda.time 库。 当我手动添加这个 lib(将 jar 文件复制到 lib 存储库,并在项目结构中添加引用)时一切正常,我可以在 servlet 中使用该库并在 jsp 中显示结果。
但在第二步中,我创建了相同的项目,但我使用的是带有 pom.xml 文件的 maven。我添加了这个依赖:
<dependencies>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.1</version>
</dependency>
</dependencies>
Maven 自动下载库,在我的项目结构中,一切看起来都很好,我运行项目......没有错误,但是当我转到我的网页时,我的导航器出现错误:
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 Reference Book
关于Java EE : NoClassDefFoundError org. joda.time.DateTime 与 IntelliJ 和 Maven,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28637218/