我正在使用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>
答案 0 :(得分:3)
这些是MainWindow
内为anonymous inner classes生成的类文件。它可能包含一堆实现的事件监听器。
匿名内部类被编译为名为<OuterClass>$<nnn>.class
的单独类文件,其中<nnn>
是编译器生成的数字。
答案 1 :(得分:1)
这些是匿名类编译成的。文件名中的数字是相应Java编译单元中相关匿名类的序号。