1

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

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

任何解决方案或建议?

谢谢!

4

6 回答 6

1

尝试使用JarSplice,它会让你定义主类。

于 2013-07-26T11:20:28.060 回答
1

NoClassDefFoundError 表示该文件在编译时存在,但在运行时未找到。由于没有编译问题,因此创建了 jar,但在运行时,使用 java -jar jarfilenamefullyqualifiedclassname 之类的命令会引发此异常。检查类路径变量,确认您正在从命令窗口中的正确文件夹位置执行命令。对于此类错误,我一直参考以下链接,它对我有用

http://javaeesupportpatterns.blogspot.in/2012/06/javalangnoclassdeffounderror-how-to.html

于 2013-07-26T11:51:10.693 回答
0

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

于 2013-07-26T11:26:58.263 回答
0

我终于通过使用 Eclipse“导出”选项而不是手动创建它来解决它。

于 2013-08-27T07:11:30.927 回答
0

这个:

The stacktrace is "Exception in thread "main" java.lang.NoClassDefFoundError: /bin/TextClient 

在我看来,您的清单是错误的。要更正它,您可以使用:

jar -uvfe Server.jar full.name.of.your.MainClass

注意:不是某些类文件的文件/路径名!这将创建一个 MANIFEST,说明这full.name.of.your.MainClass是您的主要课程。

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

bin/Foo.class
bin/...

您可能从错误的位置创建了 JAR 文件(除非您的 TLD 是 bin)。如果您的主类是 named org.adepts.Main,那么顶级条目应该是:

org/adepts/Main.class

(这是将被搜索的地方。)

于 2013-07-26T12:05:17.083 回答
0

在我的一个项目中,我也遇到了同样的情况。问题始终是我对这个错误消息的误解。

就我而言,原因是计算机找不到声明的 jar 文件。参数的使用-cp让我变得快乐。所以试试

java -jar -cp ./Server.jar 

编辑:

我忘了提到我还必须提到包含主类的类的完整限定名。

于 2013-07-26T11:45:26.273 回答