2017-04-02 8 views
0

私は単純なjson javaプログラム(mavenまたはIDEなし)を試しています。 これは私のjavaファイルです。このファイルの同じディレクトリにjava.lang.NoClassDefFoundError:javax/json/Jsonいいえ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

クラスパス –

答えて

1

JSON JARファイルをクラスパス上で実行していません。

ことは、これを試してみてください:

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

変更:;にWindows上で....

+0

にJSON JARを追加してください働いていたことをありがとうございます!実行中にjarファイルをインクルードする必要があるのはなぜですか? – Bhavik

+0

回答:1)ドキュメントはそうだと言います。 2) 'javac'コンパイラは従属JARまたはそのパス名を" .class "ファイルに埋め込まないためです。 3)Javaには、C#のアプリケーションマニフェストファイルに直接相当するものがないため。 –

関連する問題