在 Intellij 中 运行 TomCat 时抛出 NoCLassDefFoundError 和 ClassNotFoundException

NoCLassDefFoundError and ClassNotFoundException thrown when running TomCat in Intellij

我正在尝试构建一个服务器来托管一个 slack 机器人。我在 maven 文件中包含了外部库 org.json 和 运行 它并且我在 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,但这也不起作用

我通过将库的 .jar 文件添加到 WEB-INF/lib 文件夹和 运行 mvn clean

来解决它