我有三节课。主要,核心和开始。以下是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() {
}
}
以下是开始代码:
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使用不同的编译器。但我没有尝试过任何工作。任何帮助都会很棒。谢谢。 :)
答案 0 :(得分:3)
由于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
命令。