java - 在 Intellij 中运行 TomCat 时抛出 NoCLassDefFoundError 和 ClassNotFoundException
问题描述
我正在尝试构建一个服务器来托管一个 slack 机器人。我已将外部库 org.json 包含在 maven 文件中并运行它,但在 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
推荐阅读
- android - Android - 在应用程序之间共享公共文件的正确方法
- c - C中多个不分离的相等比较的行为是什么?
- twitter-bootstrap - CSS-In-Js 在一个 html 元素上使用带有字符串类名的 aphrodite 样式对象
- applescript - 如何将 Apple Mail 收到的日期、月份转换为字符串或数字?
- c++ - 传递给函数时转换参数(c ++)
- javascript - XMLHttpRequest 到没有 URL 参数的站点
- stm32 - STM32示例中变量名开头的“uw”是什么意思?
- google-compute-engine - 如何在 GCE - Google Compute Engine 上获取特定实例组的外部 IP?
- ruby - 为什么表达式“Object.singleton_class.instance_method(:refine)”会引发“NameError”?
- c# - C# 线程 - 主线程卡在 inf 循环中