2012-10-03 156 views
2

我对Java世界很陌生。我想添加Json库来编译我的程序。我从here下载了该文件。将json jar添加到classpath java

当我试图用

javac -classpath json.jar MyClassName.java 

我得到的错误来编译程序:

Note: JsonSimpleExample.java uses unchecked or unsafe operations. 
Note: Recompile with -Xlint:unchecked for details. 

,当我试图运行:

java MyClassName 

我得到:

Exception in thread "main" java.lang.NoClassDefFoundError: org/json/simple/JSONObject 
    at MyClassName.main(MyClassName.java:9) 
Caused by: java.lang.ClassNotFoundException: org.json.simple.JSONObject 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
    ... 1 more 

我在哪里犯错?

+1

你的第一个'错误'只是一个警告,而不是一个错误。 –

回答

6

java一起运行时,您也必须使用-classpath

java -classpath json.jar MyClassName 
0

第一个输出是Java编译器关于使用未经检查的代码(如原始集合)的警告。类文件已成功生成。

如果您想修复这些警告,那么您可以使用-Xlint命令行开关进行编译,并修复/禁止未检查/不安全的警告。

2

你让两个错误:

  1. 您从编译器得到的消息是一个音符,而不是编译错误。按照说明来获得细节
  2. 运行应用程序时,你忘了设置类路径:

    java -classpath json.jar;. MyClassName 
    

(假设你使用的是Windows,你在包含MyClassName.class的目录里)。如果您使用的是Unix,请将;替换为:

请注意,将类放入默认的根包中是不好的做法。

+0

'请注意,将类放在默认的根包中是不好的做法。如果是的话,我需要做什么? – sriram

+1

把你的课程放在一个明确定义的包中。阅读http://docs.oracle.com/javase/tutorial/java/package/index.html –

1

错误的原因是,该类在编译时存在,让我们的应用程序成功编译并成功链接,但在运行时不可用。

java -classpath json.jar MyClassName (or) 

java -cp json.jar MyClassName 
相关问题