Java 在Intellij中运行TomCat时引发NoCLassDefFoundError和ClassNotFoundException
我正在尝试构建一个服务器来承载slack bot。我已经在maven文件中包含了外部库org.json并运行了它,Intellij中没有任何错误,但是当我开始运行它(使用Tomcat Server 9.0.24)并向服务器发送帖子时,我得到了Java 在Intellij中运行TomCat时引发NoCLassDefFoundError和ClassNotFoundException,java,maven,intellij-idea,classnotfoundexception,Java,Maven,Intellij Idea,Classnotfoundexception,我正在尝试构建一个服务器来承载slack bot。我已经在maven文件中包含了外部库org.json并运行了它,Intellij中没有任何错误,但是当我开始运行它(使用Tomcat Server 9.0.24)并向服务器发送帖子时,我得到了java.lang.NoClassDefFoundError:org/json/JSONObject和java.lang.ClassNotFoundException:org.json.JSONObject 解决方案似乎是在编译过程中包含实际的.jar文件,
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>
触发错误的还只是org.json
,而不是另一个依赖项javax.servlet
我见过一些解决方案,但大多数都是针对Eclipse或过时的Intellij的。我还尝试过将库的.jar文件直接复制到
WEB-INF/lib
,但也没有成功我通过将库的.jar
文件添加到WEB-INF/lib
文件夹并运行mvn clean
解决了这个问题,因为这个问题是从2013年开始的,在Eclipse中,所以它不适用于您将其作为战争部署到tomcat?@WilliamBurnham是的,这是一个战争文件,但我通过运行mvn clean
(我还不能接受我自己的答案)解决了这个问题。Maven应该在构建战争时自动这样做。
// Convert POST body to json
JSONObject json = new JSONObject(jb.toString());
// Print out the contents of challenge
System.out.println(json.get("challenge"));