创建jar文件时出错:NoClassDefFoundError

时间:2012-05-06 19:17:50

标签: java executable-jar noclassdeffounderror

我的代码在Eclipse中正确编译,以及运行。在我添加一段代码之前,我还可以成功制作一个jar文件:

jar cvfm Manifest.txt <Classes>

然后我将它添加到构造函数中的代码中:

addWindowFocusListener(new WindowAdapter() {
public void windowGainedFocus(WindowEvent e) {
    JFrame window = (JFrame) e.getSource();
            window.toBack();
}});

当我尝试创建一个新的jar文件并运行它时,我收到NoClassDefError,错误行指向该代码。具体来说,我得到了这个:

Exception in thread "main" java.lang.NoClassDefFoundError: BinaryClock$1
at BinaryClock.<init>(BinaryClock.java:55)

BinaryClock是我的主类,第55行是上面代码的第一行。我不明白为什么它使BinaryClock $ 1,然后给我错误。

如果需要更多代码或信息,请与我们联系。如果不需要,我不想粘贴我的整个源代码。

2 个答案:

答案 0 :(得分:4)

BinaryClock$1.class文件将包含您在显示的代码中为WindowAdapter创建的匿名内部类。您应该将该文件包含在jar文件中。

基本上,您应该构建一个干净的目录,并在jar文件中的该目录中包含所有。不要试图对它进行选择 - 如果编译器正在生成文件,那么就有充分的理由。

答案 1 :(得分:0)

您可以直接从Eclipse创建jar文件。在Package Explorer中右键单击您的项目 - &gt;导出... - &gt; Java - &gt; JAR文件。这非常方便,因为它会考虑项目中的所有设置,包括类路径,并允许您指定大量其他选项。此外,您可以将其保存在Ant文件中,该文件可以使用外部工具运行。 更多信息:http://help.eclipse.org/helios/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Ftasks%2Ftasks-33.htm