“线程中的异常”;“主要”;NoClassDefFoundError:Main$1 java?

“线程中的异常”;“主要”;NoClassDefFoundError:Main$1 java?,java,Java,我的java程序中有3个类。main方法在main类中,但是当我以某种方式编译类时,就会创建这个main$1类。当我从eclipse运行时,没有显示异常。但是当我手动将该类部署为jar文件并且程序运行正常时,它抛出以下异常: Exception in thread "main" java.lang.NoClassDefFoundError: Main$1 at Main.main(Main.java:25) Caused by: java.lang.ClassNotFoundEx

我的java程序中有3个类。main方法在main类中,但是当我以某种方式编译类时,就会创建这个
main$1
类。当我从eclipse运行时,没有显示异常。但是当我手动将该类部署为jar文件并且程序运行正常时,它抛出以下异常:

Exception in thread "main" java.lang.NoClassDefFoundError: Main$1
        at Main.main(Main.java:25)
Caused by: java.lang.ClassNotFoundException: Main$1
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    ... 1 more
我不知道如何摆脱主要的$1.5级。我该怎么办?代码非常大,所以我只展示了主类。这是我的密码:

package calendar;

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.IOException;

import javax.swing.JFrame;

public class Main {
    public static void main (String args[]) throws NumberFormatException, IOException{
        displayCalendar p;
        final Saver save = new Saver();      
        p = new displayCalendar(save);

        JFrame fr = new JFrame();
        fr.add(p);
        fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        fr.setSize(500,500);
        fr.setVisible(true);
        fr.addWindowListener(new WindowAdapter() {

            // Implements all abstract method.

            @Override
            public void windowClosing(WindowEvent e) {
                try {
                    save.saveAll();
                } catch (IOException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }

        });        
    }
}

Main$1:-一个匿名类。这个内部类是由于主类中的以下代码块而创建的,但这应该不是问题。你应该检查你的jar文件。JAR文件应该在主类所在的同一文件夹中包含主$1类

 fr.addWindowListener(new WindowAdapter() {

            // Implements all abstract method.

            @Override
            public void windowClosing(WindowEvent e) {
                try {
                    save.saveAll();
                } catch (IOException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
    }); 

您的代码在哪里???它是一个内部匿名类(例如侦听器、验证器等),每当您创建一个匿名类时,它将被编译为该类的名称,该类的末尾带有$#。因此,
Main$1
是Main类中的第一个匿名类。您没有正确绑定jar,您遗漏了编译器生成的类文件。那么,我应该使用什么命令来编译这种类型的类呢?