java.lang.NoClassDefFoundError Main(错误名称:com/leslie/quick/Main)
我有三节课。主、核心和启动。以下是Main的代码:java.lang.NoClassDefFoundError Main(错误名称:com/leslie/quick/Main),java,eclipse,noclassdeffounderror,Java,Eclipse,Noclassdeffounderror,我有三节课。主、核心和启动。以下是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 Cor
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,并将目录更改为所有类所在的包。当我通过键入“javamain”来运行Main时,我得到
java.lang.NoClassDefFoundError Main(错误名称:com/leslie/quick/Main)
我读到的一件事是,问题可能是由从包内部调用类引起的?它不是很详细,当我从programs主文件夹运行程序时,它也做了同样的事情。如果我在eclipse中运行这个程序,它工作得很好,并且没有显示任何错误。我知道eclipse使用不同的编译器。但我试过的都不管用。任何帮助都会很好。谢谢。:) 由于您的
Main
类位于com.leslie.quick
包中,因此您应该将cd刻录到已编译输出的父目录并运行以下命令:
java com.leslie.quiz.Main
请注意,Eclipse中默认的二进制输出目录是项目的bin
目录。尽管它在Eclipse的PackageExplorer视图中是隐藏的,但它仍将存在于文件系统中。您应该能够在Eclipse的Navigator视图中看到它
bin
的内容如下所示:
bin/
com/
leslie/
quiz/
Core.class
Main.class
Start.class
在这种情况下,将cd刻录到
bin
并运行java
命令。由于Main
类位于com.leslie.quick
包中,您应该将cd刻录到编译输出的父目录并运行命令:
java com.leslie.quiz.Main
请注意,Eclipse中默认的二进制输出目录是项目的bin
目录。尽管它在Eclipse的PackageExplorer视图中是隐藏的,但它仍将存在于文件系统中。您应该能够在Eclipse的Navigator视图中看到它
bin
的内容如下所示:
bin/
com/
leslie/
quiz/
Core.class
Main.class
Start.class
在这种情况下,,cd到
bin
并运行java
命令。如果引用外部库但不将其添加到构建路径,通常会发生这种情况。最好显示堆栈跟踪,即显示消息java.lang.ClassNotFoundError:some.package.which.TheClassNotFound。是否从命令行运行此命令?如果是,请提供用于编译/运行程序的命令。我打赌你不是从包根目录运行,就是没有正确设置类路径。我觉得你的类文件和/或源文件不在正确的目录中。您的src
目录(a)是否标记为源目录?它是(b)根源目录吗?源文件(c)是否位于正确的包/目录层次结构中?由于Main
类位于com.leslie.quick
包中,请尝试从com
目录(必须包含编译的.class文件的层次结构)的父目录运行命令java com.leslie.quick.Main
。请注意,Eclipse中默认的二进制输出目录是项目的bin
目录。如果引用外部库,但不将其添加到构建路径,则通常会发生这种情况。最好显示堆栈跟踪,即显示消息java.lang.ClassNotFoundError:some.package.which.TheClassNotFound.What运行此操作命令行?如果是,请提供用于编译/运行程序的命令。我打赌你不是从包根目录运行,就是没有正确设置类路径。我觉得你的类文件和/或源文件不在正确的目录中。您的src
目录(a)是否标记为源目录?它是(b)根源目录吗?源文件(c)是否位于正确的包/目录层次结构中?由于Main
类位于com.leslie.quick
包中,请尝试从com
目录(必须包含编译的.class文件的层次结构)的父目录运行命令java com.leslie.quick.Main
。请注意,Eclipse中默认的二进制输出目录是项目的bin
目录。