Bhavik
Bhavik

Reputation: 346

java.lang.NoClassDefFoundError: javax/json/Json no maven or IDE

I am trying a simple json java program (no maven or IDE). This is my java file:

import javax.json.*;
import javax.json.Json;
import javax.json.JsonObject; 
import javax.json.JsonObjectBuilder;
import javax.json.JsonWriter;

class JsonTest {

public static void main(String[] args){
  JsonObject obj = Json.createObjectBuilder()
  .add("name", "foo")
  .add("num", new Integer(100))
  .add("balance", new Double(1000.21))
  .add("is_vip", new Boolean(true)).build();

  System.out.print(obj);
}
}

In the same directory of this file, I have the jar file:

javax.json-1.0.jar

I don't get any error in compiling:

javac -classpath ./javax.json-1.0.jar JsonTest.java

But when I run the program I get the error:

Exception in thread "main" java.lang.NoClassDefFoundError: javax/json/Json
    at JsonTest.main(JsonTest.java:10)
Caused by: java.lang.ClassNotFoundException: javax.json.Json
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 1 more    

Why am I getting this error when there was no error in compilation. I already searched other questions with this error but unlike them I am not using any IDE or maven. Any help will be appreciated.

Upvotes: 1

Views: 5592

Answers (1)

Stephen C
Stephen C

Reputation: 718768

You are not running it with the JSON JAR file on the classpath.

Try this:

java -classpath .:./javax.json-1.0.jar JsonTest

Change : to ; on Windows ....

Upvotes: 1

Related Questions