Jar文件的NoClassDefFoundError

时间:2011-11-28 17:41:04

标签: java jar

我理解这个主题有很多问题,但似乎没有一个问题适用于我的情况。基本上我创建了一个包含三个类文件的程序,其中一个名为UserInterface.class,包含main函数。我创建了一个包含Main-Class的Manifest.txt:带有回车符的shoppingCrawler.UserInterface。然后我做了jar cfm shoppingCrawler.jar Manifest.txt * .class。这将创建一个名为shoppingCrawler.jar的jar文件。但是,当我做了java -jar shoppingCrawler.jar时,我得到了

Exception in thread "main" java.lang.NoClassDefFoundError: UserInterface (wrong
name: shoppingCrawler/UserInterface)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
4)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)

无法找到主类:UserInterface。程序将退出。

你知道什么是错的吗?谢谢!

2 个答案:

答案 0 :(得分:0)

您的jar文件的内容是什么?在我看来,您的类文件位于根目录中,而不是位于“shoppingCrawler”目录中。

答案 1 :(得分:0)

UserInterface

包中找不到班级shoppingCrawler/UserInterface

您的类路径错误。请查看您的类路径,也许您从错误的目录中调用该应用程序(如果它没有被放入jar文件中)。或者你没有在你的jar中包含所有需要的类。