Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.NoClassDefFoundError Main(错误名称:com/leslie/quick/Main)_Java_Eclipse_Noclassdeffounderror - Fatal编程技术网

java.lang.NoClassDefFoundError Main(错误名称:com/leslie/quick/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

我有三节课。主、核心和启动。以下是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,并将目录更改为所有类所在的包。当我通过键入“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
目录。