我有一个名为GameClient.jar的jar,其中有一个主要方法。我有一个json.jar,它确实包含org / json / JSONException.class
这两个都在dist文件夹中。
我运行以下java -classpath dist/json.jar -jar dist/gameclient.jar
不太确定为什么我仍然得到
Exception in thread "main" java.lang.NoClassDefFoundError: org/json/JSONException
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.getMethod0(Unknown Source)
at java.lang.Class.getMethod(Unknown Source)
at sun.launcher.LauncherHelper.getMainMethod(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.json.JSONException
我使用Windows XP和Java 1.7。无论是否使用classpath选项,我都会遇到相同的错误。
最佳答案
从java
文档:
-罐
执行封装在JAR文件中的程序。第一个参数是JAR文件的名称
而不是启动类名称。为了使此选项起作用,JAR的清单
文件必须包含Main-Class:classname格式的一行。在这里,类名标识了
具有公共静态void main(String [] args)方法的类,该方法用作您的应用
阳离子的起点。请参阅Java教程@的jar(1)和Jar路径
http://java.sun.com/docs/books/tutorial/jar有关使用Jar文件的信息
和Jar文件清单。
使用此选项时,JAR文件是所有用户类以及其他用户的源
类路径设置将被忽略。
因此,您的gameclient.jar
必须包括所需的所有用户类。 classpath
设置将被忽略。只需创建gameclient.jar
即可将json.jar
中的类包括在内。