繁体   English   中英

类路径不起作用-Java lang ClassNotFoundException

[英]classpath not working - java lang ClassNotFoundException

我有一个名为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)方法的类,该方法用作应用程序的起点。 有关使用Jar文件和Jar文件清单的信息,请参见Java教程@的jar(1)和Jar路径。http://java.sun.com/docs/books/tutorial/jar

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

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

可以将类路径条目添加到GameClient MANIFEST.MF而不是将类路径作为命令行参数提供:

Class-Path: dist/json.jar 

请参阅在MANIFEST.MF中包含类路径

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM