我正在开发一个包含三个类的程序,还包括一些外部jar档案和类。当我在Eclipse中运行它时,它可以正常工作,但我需要尝试其他一些程序,所以我需要在控制台上运行它。我将所有文件保存在一个文件夹中,该文件夹包含另外两个文件夹,一个包含我创建的.class,另一个包含.java和.jar存档以及包含外部类的文件夹。我试图创建一个包含这个文件夹和清单的.jar存档,在那里我告诉了主要类的位置。
当我运行它时,我收到“线程中的异常”主“java.lang.NoClassDefFoundError”,所以它没有找到主要的类,但我不知道为什么。我尝试了一些不同的方法来在清单中定义它并更改类路径,但它仍然不起作用。
任何解决方案或建议?
谢谢!
答案 0 :(得分:1)
尝试使用JarSplice,它可以让你定义主类。
答案 1 :(得分:1)
NoClassDefFoundError表示文件在编译期间存在,但在运行时未找到。由于没有编译问题,因此创建了jar,但在运行时,在使用java -jar jarfilename,fullqualifiedclassname之类的命令时,它抛出了此异常。检查classpath变量,验证您是否在命令窗口中从正确的文件夹位置执行命令。 我总是在下面的链接中提到这些错误,它对我有用
http://javaeesupportpatterns.blogspot.in/2012/06/javalangnoclassdeffounderror-how-to.html
答案 2 :(得分:0)
在创建项目时,例如ABC IDE通常Netbeans创建源文件夹并将主类创建为包含主类的ABC.java。在Netbeans IDE中,如果主要类不是ABC,则允许您提及它,如果不是ABC,则必须创建在ABC.java类中执行应用程序时要运行的类的实例。
答案 3 :(得分:0)
在我的一个项目中,我也遇到了同样的情况。问题总是误解了我的错误信息。
在我的情况下的原因是计算机无法找到声明的jar文件。使用参数-cp
让我感到高兴。所以试试
java -jar -cp ./Server.jar
编辑:
我忘了提到我还要提到包含主要类的完整的类名称。
答案 4 :(得分: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)。
如果您的主要类名为org.adepts.Main
,则顶级条目应为:
org/adepts/Main.class
(这是搜索的地方。)
答案 5 :(得分:0)
我最终通过使用Eclipse“导出”选项解决了这个问题,而不是手动创建它。