Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不';我在罐子里找不到我的主类_Java_Class_Exception_Jar_Main - Fatal编程技术网

Java 不';我在罐子里找不到我的主类

Java 不';我在罐子里找不到我的主类,java,class,exception,jar,main,Java,Class,Exception,Jar,Main,我正在开发一个包含三个类的程序,还包括一些外部jar档案和类。当我在Eclipse中运行它时,它工作正常,但我需要尝试其他一些程序,所以我需要在控制台上运行它。我将所有内容保存在一个文件夹中,其中包含另外两个文件夹,一个包含我创建的.class,另一个包含.java和.jar存档,还有一个包含外部类的文件夹。我试图创建一个包含这个文件夹和清单的.jar归档文件,我告诉了主类在哪里 当我运行它时,我收到“Exception in thread”main“java.lang.NoClassDefFo

我正在开发一个包含三个类的程序,还包括一些外部jar档案和类。当我在Eclipse中运行它时,它工作正常,但我需要尝试其他一些程序,所以我需要在控制台上运行它。我将所有内容保存在一个文件夹中,其中包含另外两个文件夹,一个包含我创建的.class,另一个包含.java和.jar存档,还有一个包含外部类的文件夹。我试图创建一个包含这个文件夹和清单的.jar归档文件,我告诉了主类在哪里

当我运行它时,我收到“Exception in thread”main“java.lang.NoClassDefFoundError”,因此它没有找到main所在的类,但我不知道为什么。我尝试了一些不同的方法在清单中定义它,并更改了类路径,但仍然不起作用

有什么解决方案或建议吗


谢谢

尝试使用,它将允许您定义主类。

创建项目时,例如ABC,IDE通常会创建源文件夹,并将主类创建为包含主类的ABC.java。在Netbeans IDE中,如果主类不是ABC或不是ABC,则必须在应用程序在ABC.java类中执行时创建要运行的类的实例。

在我的一个项目中,我也是在相同的情况下运行的。问题总是我对这个错误信息的错误理解

在我的例子中,原因是计算机找不到声明的jar文件。参数
-cp
的使用让我感到高兴。所以试试看

java -jar -cp ./Server.jar 
编辑:


我忘了提到我还必须提到包含主类的类的全名。

NoClassDefFoundError意味着该文件在编译时存在,但在运行时找不到。因为没有编译问题,所以创建了jar,但在运行时,当使用java-jar-jarfilename-fullyqualifiedclassname之类的命令时,它抛出了这个异常。检查classpath变量,确认您正在命令窗口中的正确文件夹位置执行命令。 我总是参考下面的链接来查找这些错误,它对我很有用

这是:

The stacktrace is "Exception in thread "main" java.lang.NoClassDefFoundError: /bin/TextClient 
在我看来你的清单是错的。要更正它,您可以使用:

jar -uvfe Server.jar full.name.of.your.MainClass
注意:不是某个类文件的文件/路径名! 这将创建一个清单,告知
full.name.of.your.MainClass
是您的主类

此外,如果您的jar包含以下条目:

bin/Foo.class
bin/...
您可能从错误的位置创建了JAR文件(除非您的TLD是bin)。 如果您的主类名为
org.adepts.main
,则顶级条目应为:

org/adepts/Main.class

(这是搜索的地方。)

我最终通过使用Eclipse“导出”选项解决了这个问题,而不是手动创建它。

请发布:-您用来创建Jar的命令-您用来运行程序的命令-失败时的堆栈跟踪(即当您在线程“main”中看到
异常时的完整错误消息,等等)这对我来说似乎是家常便饭。startscript的外观如何?似乎find your main,但抛出java.lang.NoClassDefFoundError,可以添加一些stacktrace?stacktrace是“线程中的异常”main“java.lang.NoClassDefFoundError:/bin/TextClient,原因是:java.lang.ClassNotFoundException:.bin.TextClient at java.net.URLClassLoader$1.run(URLClassLoader.java:217)java.net.URLClassLoader.findClass(URLClassLoader.java:205)java.lang.ClassLoader.loadClass(ClassLoader.java:321)sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)java.lang.ClassLoader.loadClass(ClassLoader.java:266)的java.security.AccessController.doPrivileged(本机方法)找不到主类:/bin/TextClient。程序将退出。我使用“jar-cmf manifest.txt Server.jar Server”创建jar,作为包含所有存档的文件夹的服务器。我使用“java-jar Server.jar”运行它