zwlgator
zwlgator

Reputation: 81

java.lang.ClassNotFoundException: org.json.JSONException

I am building a simple maven project. I used build path to add json as a third party library and also added it to web-inf library. In the end, i added the dependency in pom.xml. However, with all the effort above, i still get this exception. Any information and advice is appreciated!

below is the exception

SEVERE: Servlet.service() for servlet [sfmserver] in context with path [/mysfmovies] threw exception [Servlet execution threw an exception] with root cause
java.lang.ClassNotFoundException: org.json.JSONException

Below is the content of my pom.xml

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mysfmovies</groupId>
  <artifactId>mysfmovies</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>mysfmovies Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
      <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
    </dependency>
            <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.1.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.1.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20090211</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.google.code.geocoder-java</groupId>
            <artifactId>geocoder-java</artifactId>
            <version>0.16</version>
            <scope>provided</scope>
        </dependency>
  </dependencies>
  <build>
    <finalName>mysfmovies</finalName>
  </build>
</project>

Upvotes: 5

Views: 25554

Answers (3)

Slayver Sayto
Slayver Sayto

Reputation: 23

Remove the JSONException and replace it with a normal Exception. This solved the issue for me. The cause of the error is a little complicated and related to jar optimization in some packages in the new versions.

Upvotes: 1

Raghu K Nair
Raghu K Nair

Reputation: 3932

you can solve this add the following dependency (http://mvnrepository.com/artifact/org.json/json/20080701)

<dependency>
   <groupId>org.json</groupId>
   <artifactId>json</artifactId>
   <version>20080701</version>
</dependency>

Upvotes: 6

miljanm
miljanm

Reputation: 936

You have put all the dependencies in provided scope. That means that maven war plugin won't put them into WEB-INF/lib directory and thus they won't be on the classpath when you run your web app. You really should have put them into compile scope (that's the default one, just remove the tag).

If you still really want them provided, put them into your container's lib directory, or check the endorsedDirs configuration of the war plugin.

Upvotes: 0

Related Questions