奇怪的类文件出现在我的bin文件夹中

时间:2012-09-14 10:08:36

标签: java eclipse class exception

我正在使用Eclipse + Window Builder +几个第三方库来构建一个gui应用程序,

我的应用程序的入口点位于MainWindow.java文件中,该文件还包含应用程序的gui,除了我有很少的帮助类。

我的应用程序工作正常,但当我检查bin文件夹时,我发现还有四个类文件: 1. MainWindow $ 1.class 2. MainWindow $ 2.class 3. MainWindow $ 3.class 4. MainWindow $ 4.class。

现在我不明白为什么这些文件在这里,当我删除这些文件时,Eclipse会抛出异常

Exception in thread "main" java.lang.NoClassDefFoundError: gui/MainWindow$1
at gui.MainWindow.main(MainWindow.java:71)
    Caused by: java.lang.ClassNotFoundException: gui.MainWindow$1
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)

抛出异常的代码是:

public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                MainWindow window = new MainWindow();
                window.frmMailExtractor.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });

我无法找出为什么这些文件存在以及是谁放置它们?任何想法?

好吧所以这些是匿名类,但为什么Exception呢?...为什么我不能在我的eclipse中看到它们...当我将它作为一个可运行的jar导出时,jar会抛出相同的异常< / p>

2 个答案:

答案 0 :(得分:3)

这些是MainWindow内为anonymous inner classes生成的类文件。它可能包含一堆实现的事件监听器。

匿名内部类被编译为名为<OuterClass>$<nnn>.class的单独类文件,其中<nnn>是编译器生成的数字。

答案 1 :(得分:1)

这些是匿名类编译成的。文件名中的数字是相应Java编译单元中相关匿名类的序号。