【问题标题】:Strange class files appearing in my bin folder我的 bin 文件夹中出现奇怪的类文件
【发布时间】:2012-09-14 10:08:36
【问题描述】:

我正在使用 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();
            }
        }
    });

我无法找出这些文件为何存在以及是谁放置的?有什么想法吗?

好的,所以这些是匿名类,但是为什么会出现异常呢?...为什么我在 Eclipse 中看不到它们。因为当我将其导出为可运行的 jar 时,jar 会引发相同的异常

【问题讨论】:

  • 它们指的是匿名内部类。见stackoverflow.com/questions/380406/…
  • 那么我如何将这些添加到我的 jar 中..我需要将我的应用程序作为 jar 运行...当我使用 Eclipse 的导出选项创建 jar 时,它会给出相同的异常并关闭。

标签: java eclipse class exception


【解决方案1】:

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

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

【讨论】:

  • 那么我如何将这些添加到我的 jar 中..我需要将我的应用程序作为 jar 运行...当我使用 Eclipse 的导出选项创建 jar 时,它会给出相同的异常并关闭。
  • @Sudh,只需重建您的应用程序以再次重新生成丢失的类文件,jar 构建器应该自动包含所有。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2023-02-26
    • 1970-01-01
    • 2019-07-23
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 2021-03-03
    • 2012-09-25
    • 1970-01-01
    相关资源
    最近更新 更多