Maven导入的JAR的java.lang.ClassNotFoundException

时间:2019-03-30 22:14:45

标签: java maven

我通过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“

图片: Maven Enviroment

<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>

2 个答案:

答案 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。