繁体   English   中英

javax.servlet.ServletException:org.glassfish.jersey.server.ContainerException:java.lang.NoClassDefFoundError:org / json / JSONObject

[英]javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: org/json/JSONObject

我在IntelliJ中有一个简单的Java类,如下所示:

import javax.ws.rs.*;
import javax.ws.rs.core.*;
import java.io.*;
import java.util.List;

@Path("/hello")
public class Hello {
     @GET
     @Path("/{param}")
     public Response getMsg(@PathParam("param") String msg) {
          String output = "Jersey say : " + msg;
          return Response.status(200).entity(output).build();
   }
@POST
@Path("/jsonRequest")
@Produces(MediaType.APPLICATION_JSON)
public Response getJson(String url) throws InterruptedException, IOException 
{
    JSONObject json= JSONInteraction.readJsonFromUrl(url);
    Response.ResponseBuilder response = Response.ok(json);
    return response.build();
}
}

我还包括json的maven依赖项,如下所示:

 <!-- https://mvnrepository.com/artifact/org.json/json -->
 <dependency>
      <groupId>org.json</groupId>
      <artifactId>json</artifactId>
      <version>20180130</version>
 </dependency>

我的war文件部署如下所示:

在此处输入图片说明

启动服务器并部署项目后,即使添加了所有依赖项,当我尝试时,仍然会收到javax.servlet.ServletException:org.glassfish.jersey.server.ContainerException:java.lang.NoClassDefFoundError:org / json / JSONObject在POSTMAN上运行POST请求。 执行GET请求时,我得到正确的结果,因为它与JSON无关。

我已经阅读了几乎所有的StackOverflow解决方案,但都没有帮助。 有人可以帮我解决这个问题吗? 欢迎任何建议。

请执行以下操作:

  • 检查是否在WAR中添加了json库-解压缩WAR,并检查其中是否为json-20180130.jar
  • 检查您的服务器Classloader是否不包含任何其他带有org.json.JSONObject类的jar(对于Tomcat:{CATALINA_HOME} / lib)-如果包含,并且服务器安装包中未提供JAR,请删除它-可以与从您的WAR加载的类冲突
  • 请仔细阅读在应用程序启动期间创建的服务器日志:请搜索有关类加载器中类重复,加载JAR故障等问题的任何信息。

如果没有帮助,请添加:

  • 的pom.xml
  • 整个堆栈跟踪
  • Servlet容器的名称和版本

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM