简体   繁体   中英

Jersey 500 Error NoClassDefFoundError: org/json/JSONException

Before you mark it as DUPLICATE please understand I've checked all the relevant links but to no avail.

I'm calling the following Service.

@Path("/courses")
public class CourseService {

//  @GET
//  @Produces(MediaType.TEXT_PLAIN)
//  public String hello(){
//      return "Hello World !!!";
//  }

    private DataService _service;

    public CourseService(String jsonData) throws ParseException, IOException, JSONException {
        _service = new DataService(jsonData);
    }

    @GET
    @Produces(MediaType.APPLICATION_XML)
    public ArrayList<Course> getAllCourses(){
        return _service.get_handler().getAllCourses();

    }
}

If I just run the commented portion of the code my application runs fine and produces "Hello World"

But then when I run my actual service it gives me the following error.

type Exception report

message Servlet.init() for servlet Jersey Web Application threw exception

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Servlet.init() for servlet Jersey Web Application threw exception
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1502)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1458)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Thread.java:745)
root cause

java.lang.NoClassDefFoundError: org/json/JSONException
    java.lang.Class.getDeclaredConstructors0(Native Method)
    java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
    java.lang.Class.getConstructors(Class.java:1651)
    org.glassfish.jersey.server.model.MethodHandler$ClassBasedMethodHandler.<init>(MethodHandler.java:265)
    org.glassfish.jersey.server.model.MethodHandler.create(MethodHandler.java:155)
    org.glassfish.jersey.server.model.ResourceMethod$Builder.createInvocable(ResourceMethod.java:550)
    org.glassfish.jersey.server.model.ResourceMethod$Builder.build(ResourceMethod.java:536)
    org.glassfish.jersey.server.model.Resource$Builder.processMethodBuilders(Resource.java:663)
    org.glassfish.jersey.server.model.Resource$Builder.buildResourceData(Resource.java:599)
    org.glassfish.jersey.server.model.Resource$Builder.build(Resource.java:655)
    org.glassfish.jersey.server.model.Resource.from(Resource.java:798)
    org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:465)
    org.glassfish.jersey.server.ApplicationHandler.access$500(ApplicationHandler.java:184)
    org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:350)
    org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:347)
    org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    org.glassfish.jersey.internal.Errors.processWithException(Errors.java:255)
    org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:347)
    org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:392)
    org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:177)
    org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:369)
    javax.servlet.GenericServlet.init(GenericServlet.java:158)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1502)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1458)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Thread.java:745)

This is the structure of my Project Directory

在此处输入图片说明 I've tested my CourseService using a TestClient and it works fine. What am I doing wrong.

You shouldn't be defining dependencies like that. All your dependencies should be managed with something like maven or gradle. That being said, did you add it the jar to the class path?

Since your using maven, you would want to add this to your <dependencies> section. For example:

<dependencies>
    <!-- other dependencies -->
    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <!-- or w.e. version you wanted to use. -->
        <!-- See http://mvnrepository.com/artifact/org.json/json-->
        <version>20160212</version> 
     </dependency>
     <!-- other dependencies -->
</dependencies>

Eclipse should automatically add dependencies like the one above to your class path.

Check out one of the official tutorials on maven: https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html

java.lang.NoClassDefFoundError: org/json/JSONException

Please make sure JSONException is defined and accessible.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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