【问题标题】:java.lang.ClassNotFoundException for JARs imported by MavenMaven 导入的 JAR 的 java.lang.ClassNotFoundException
【发布时间】:2019-03-30 22:14:44
【问题描述】:

我通过 Maven 导入 JSON 并将其添加到 POM.XML,文件被下载到文件夹“Maven Dependencies”,尽管项目运行没有错误并且导入正常,但出现错误服务器响应:

“GRAVE: Servlet.service() for servlet [jsp] in context with path [/mavenDWP] throw exception [javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/json/JSONObject] with root原因 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>

【问题讨论】:

    标签: java maven


    【解决方案1】:

    尝试将 &lt;scope&gt;runtime&lt;/scope&gt; 添加到您的 json 依赖项中,以确保您的 Tomcat 或者换句话说,您可以从 JSP 中访问此依赖项的类。目前它带有隐式作用域compile

    如果您还有类似这样的问题,请确保对进一步的Maven scopes and their semantics 也有一个很好的了解。

    【讨论】:

      【解决方案2】:

      首先:你的依赖声明看起来不错,这个隐式编译是正确的。

      你为什么用 jdk10 运行非常旧的 tomcat7 - 我确定不再支持这种组合。

      我认为,这是您的 Eclipse 项目设置的问题 - 类路径的配置方式。请查看 Eclipse 项目“mavenDWP”的类路径设置。

      顺便说一句:目前您的项目正在从两个“源”创建其类路径 - 一个源是 maven,另一个源是 eclipse 贡献的部分(在“库”中列为 Apache Tomcat v7.0。这个项目永远不会自己工作。也许您首先尝试使用 maven 创建一个纯 Web 项目(例如,使用 https://maven.apache.org/archetypes/maven-archetype-webapp/ 并稍后将其导入 eclipse。

      【讨论】:

      猜你喜欢
      • 2016-02-04
      • 2018-01-08
      • 1970-01-01
      • 2018-09-06
      • 2017-07-04
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多