首页 > 解决方案 > 在 Intellij 中运行 TomCat 时抛出 NoCLassDefFoundError 和 ClassNotFoundException

问题描述

我正在尝试构建一个服务器来托管一个 slack 机器人。我已将外部库 org.json 包含在 maven 文件中并运行它,但在 Intellij 中没有出现任何错误,但是当我开始运行它(使用 Tomcat Server 9.0.24)并向服务器发送 POST 时,我得到了java.lang.NoClassDefFoundError: org/json/JSONObjectjava.lang.ClassNotFoundException: org.json.JSONObject

解决方案似乎是在编译中包含实际的 .jar 文件,但我认为它已经可以在Project Settings -> Libraries 图书馆

包括pom.xml依赖项。

<dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.json/json -->
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20190722</version>
        </dependency>
    </dependencies>

触发错误的代码。

// Convert POST body to json
        JSONObject json = new JSONObject(jb.toString());

        // Print out the contents of challenge
        System.out.println(json.get("challenge"));

它也只是org.json触发错误,而不是其他依赖项javax.servlet

我已经看到了一些解决方案,但其中大多数是针对 Eclipse 或过时的 Intellij 的。我也尝试将库的 .jar 文件直接复制到,WEB-INF/lib但这也不起作用

标签: javamavenintellij-ideaclassnotfoundexception

解决方案


我通过将.jar库的文件添加到文件WEB-INF/lib夹并运行来解决它mvn clean


推荐阅读