2017-04-02 42 views
0

我正在尝试一个简单的json java程序(没有maven或IDE)。 这是我的java文件:java.lang.NoClassDefFoundError:javax/json/Json no maven或IDE

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); 
} 
} 

在此文件的同一目录下,我有jar文件:

javax.json-1.0.jar 

我没有得到任何错误编译:

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

但是当我运行该程序时出现错误:

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  

为什么当编译时没有错误时会出现此错误。我已经搜索了这个错误的其他问题,但不像他们,我没有使用任何IDE或Maven。任何帮助将不胜感激。

+0

请加上JSON的jar在类路径 –

回答

1

您没有在类路径中使用JSON JAR文件运行它。

试试这个:

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

变化:;在Windows ....

+0

谢谢你的工作!为什么在运行时还必须包含jar文件? – Bhavik

+0

回答:1)因为文档是这样说的。 2)因为'javac'编译器没有将依赖的JAR或其路径名嵌入到“.class”文件中。 3)因为Java没有直接等价于C#的应用程序清单文件。 –