1

Eclipse + Window Builder + いくつかのサードパーティ ライブラリを使用して、GUI アプリケーションを構築しています。

私のアプリケーションのエントリ ポイントは MainWindow.java ファイルにあります。このファイルにはアプリケーションの GUI も含まれていますが、ヘルパー クラスはほとんどありません。

私のアプリケーションは正常に動作しますが、bin フォルダーにチェックインすると、さらに 4 つのクラス ファイルが見つかります。

これらのファイルがここにある理由がわかりません。これらのファイルを削除すると、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();
            }
        }
    });

これらのファイルが存在する理由と、誰がファイルを置いたのかを突き止めることができません。何か案は?

これらは匿名クラスですが、なぜ例外なのですか?...そして、なぜEclipseでそれらを見ることができないのですか..実行可能なjarとしてエクスポートすると、jarが同じ例外をスローするためです

4

2 に答える 2

3

これらは、内の匿名内部クラス用に生成されたクラス ファイルですMainWindow。おそらく、そのように実装された一連のイベントリスナーが含まれています。

匿名の内部クラスは、 という名前の個別のクラス ファイルにコンパイルされます<OuterClass>$<nnn>.class。ここ<nnn>で、 はコンパイラによって生成された番号です。

于 2012-09-14T10:10:25.067 に答える
1

これらは、匿名クラスがコンパイルされるものです。ファイル名の数字は、それぞれの Java コンパイル ユニット内の関連する無名クラスの序数です。

于 2012-09-14T10:11:18.697 に答える