“线程中的异常”;“主要”;NoClassDefFoundError:Main$1 java?
我的java程序中有3个类。main方法在main类中,但是当我以某种方式编译类时,就会创建这个“线程中的异常”;“主要”;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
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,您遗漏了编译器生成的类文件。那么,我应该使用什么命令来编译这种类型的类呢?