java.lang.NoClassDefFoundError Main(错误名称:com / leslie / quiz / Main)

我有三节课。 主要,核心和开始。 以下是Main的代码:

package com.leslie.quiz; public class Main { public static void main(String[] args) { com.leslie.quiz.Start.main(null); } } 

这是Core的代码:

  package com.leslie.quiz; public class Core { public void coldlunch() { } public void hotlunch() { } } 

这是Start的代码:

  package com.leslie.quiz; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JLabel; import java.awt.BorderLayout; import javax.swing.JButton; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class Start { com.leslie.quiz.Core core = new Core(); float opacity = 1; private JFrame frmCafeteriaQuiz; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { Start window = new Start(); window.frmCafeteriaQuiz.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the application. */ public Start() { initialize(); } /** * Initialize the contents of the frame. */ private void initialize() { frmCafeteriaQuiz = new JFrame(); frmCafeteriaQuiz.setTitle("Cafeteria Quiz"); frmCafeteriaQuiz.setResizable(false); frmCafeteriaQuiz.setBounds(100, 100, 471, 331); frmCafeteriaQuiz.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JLabel lblWelcomeToThe = new JLabel("Welcome to the Cafeteria Quiz! Are you a responsible hawk?"); frmCafeteriaQuiz.getContentPane().add(lblWelcomeToThe, BorderLayout.NORTH); JButton btnIHaveCold = new JButton("I have Cold Lunch"); btnIHaveCold.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent arg0) { core.coldlunch(); } }); frmCafeteriaQuiz.getContentPane().add(btnIHaveCold, BorderLayout.WEST); JButton btnIHaveHot = new JButton("I have Hot Lunch"); btnIHaveHot.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { core.hotlunch(); } }); frmCafeteriaQuiz.getContentPane().add(btnIHaveHot, BorderLayout.EAST); } } 

我正在运行cmd,并将目录更改为我所有类所在的包。 当我通过键入“java Main”运行Main时,我得到了

java.lang.NoClassDefFoundError Main(错误名称:com / leslie / quiz / Main)

我读过的一件事是,问题可能是从包内调用类引起的? 它不是很详细,当我从程序主文件夹中运行程序时,它做了同样的事情。 如果我在eclipse中运行该程序,它可以很好地运行并且没有错误。 我知道eclipse使用不同的编译器。 但我没有尝试过任何工作。 任何帮助都会很棒。 谢谢。 🙂

由于您的Main类位于com.leslie.quiz包中,因此您应该cd到已编译输出的父目录并运行命令:

 java com.leslie.quiz.Main 

请注意,Eclipse中的默认二进制输出目录是项目的bin目录。 虽然它在Eclipse的Package Explorer视图中是隐藏的,但它仍然存在于文件系统中。 您应该能够从Eclipse的Navigator视图中看到它。

bin的内容看起来像这样:

 bin/ com/ leslie/ quiz/ Core.class Main.class Start.class 

在这种情况下,cd到bin并运行java命令。