classpath不工作 - java lang ClassNotFoundException

ara*_*ant 0 java classpath

我有一个名为GameClient.jar的jar,它有一个main方法.我有一个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
Run Code Online (Sandbox Code Playgroud)

我在Windows XP和Java 1.7上.无论有没有classpath选项,我都会得到相同的错误.

Jon*_*Lin 7

java文档:

-罐

执行封装在JAR文件中的程序.第一个参数是JAR文件的名称而不是启动类名称.为了使此选项起作用,JAR文件的清单必须包含Main-Class:classname形式的一行.这里,classname标识具有public static void main(String [] args)方法的类,该方法用作应用程序的起点.有关使用Jar文件和Jar文件清单的信息,请参阅Java Tutorial的jar(1)和Jar跟踪@ http://java.sun.com/docs/books/tutorial/jar.

使用此选项时,JAR文件是所有用户类的源,并忽略其他用户类路径设置.

因此,您gameclient.jar必须包含所需的所有用户类.该classpath设置被忽略.只需创建gameclient.jar包含类的类json.jar.