我通过Maven导入JSON并将其添加到POM.XML,文件下载到文件夹“ Maven Dependencies”,尽管该项目正在运行且没有错误并且可以导入,但服务器响应出现了错误:
“ GRAVE:具有路径[/ mavenDWP]的上下文中Servlet [jsp]的Servlet.service()抛出了异常[javax.servlet.ServletException:java.lang.NoClassDefFoundError:org / json / JSONObject]原因 java.lang.ClassNotFoundException:org.json.JSONObject“
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>mavenDWP</groupId>
<artifactId>mavenDWP</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180813</version>
</dependency>
</dependencies>
</project>
答案 0 :(得分:0)
尝试将<scope>runtime</scope>
添加到json依赖项中,以确保Tomcat或换句话说,您可以从JSP中访问此依赖项的类。当前,它具有隐式范围compile
。
如果您还有其他类似问题,请确保对另外的Maven scopes and their semantics也有一个很好的了解。
答案 1 :(得分:0)
首先:您的依赖项声明看起来不错,此隐式编译是正确的。
为什么要使用jdk10运行非常老的tomcat7-我确定不再支持此组合。
我认为,这是您的Eclipse项目设置的问题-类路径的配置方式。请看一下Eclipse项目“ mavenDWP”的类路径设置。
顺便说一句:当前,您的项目正在从两个“源”创建其类路径-一个源是maven,另一个源是eclipse贡献的部分(在“库”中列为Apache Tomcat v7.0。项目永远都不会独立运行。也许您首先尝试使用maven创建一个纯Web项目(例如,使用https://maven.apache.org/archetypes/maven-archetype-webapp/,然后将其导入eclipse。