Java EE : NoClassDefFoundError org. joda.time.DateTime 与 IntelliJ 和 Maven

标签 java maven intellij-idea jodatime

我正在使用 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/

相关文章:

JSF xmlns URI 未在 IntelliJ IDEA 中注册

java - 如何在 Intellij 中将一个项目从一台计算机传输到另一台计算机?

java - Android:在某些情况下禁用 AlertDialogBu​​ilder 的“确定”按钮

java - 我的Java程序正在创建27个无效错误

java - 何时调用 View.onMeasure()?

java - 无法构建 Spring-boot-sample-gae(在 GAE 上部署 Spring Boot)

java.lang.NoClassDefFoundError : org/springframework/core/env/ConfigurableEnvironment 错误

java - Maven - 如何仅在 Java EE 项目上重建 .xml 文件

java - Spring ApplicationContext.getBean(Class c) 不适用于代理类

java - intellij idea - 无法在 linux 上运行 "Tomcat"项目