在 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/JSONObject
和 java.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
来解决它
我正在尝试构建一个服务器来托管一个 slack 机器人。我在 maven 文件中包含了外部库 org.json 和 运行 它并且我在 Intellij 中没有收到任何错误,但是当我开始 运行 它时(使用 Tomcat Server 9.0.24) 并发送 POST 到服务器,我得到 java.lang.NoClassDefFoundError: org/json/JSONObject
和 java.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