头一个Java问题-找不到Main方法

头一个Java问题-找不到Main方法,java,methods,main,Java,Methods,Main,我已经在互联网上寻找解决方案,但我仍然不明白为什么会收到以下错误消息: 错误:在DrumKit类中找不到Main方法,请定义Main方法 方法为:publicstaticvoidmain(字符串[]args)或JavaFX 应用程序类必须扩展javafx.application.application“ 这是我的密码: java class DrumKit { boolean topHat = true; boolean snare = true; void playT

我已经在互联网上寻找解决方案,但我仍然不明白为什么会收到以下错误消息:

错误:在DrumKit类中找不到Main方法,请定义Main方法 方法为:publicstaticvoidmain(字符串[]args)或JavaFX 应用程序类必须扩展javafx.application.application“

这是我的密码:

java

class DrumKit {
    boolean topHat = true;
    boolean snare = true;

    void playTopHat() {
        System.out.println("ding ding da-ding");
    }

    void playSnare() {
        System.out.println("bang bang ba-bang");
    }
}
DrumKitTestDrive.java

class DrumKitTestDrive {
    public static void main(String [] args) {

        DrumKit d = new DrumKit();
        d.playSnare();
        d.snare = false;
        d.playTopHat();
        if (d.snare == true) {
            d.playSnare();
        }
    }
}
我正在使用InteliJ,输入命令
javac DrumKitTestDrive.java
,然后输入
javadrumkit.


这是来自Head First Java系列的一个练习,我的答案与书中的答案完全相同。但是我仍然遇到这个错误。

包含
main
方法的类必须是
public

public class DrumKitTestDrive {
    public static void main(String [] args) {

        DrumKit d = new DrumKit();
        d.playSnare();
        d.snare = false;
        d.playTopHat();
        if (d.snare == true) {
            d.playSnare();
        }
    }
}
有关访问修改器的详细信息,请参见


您还尝试运行没有主方法的类
DrumKit
。您必须运行
JavaDrumkittestDrive

包含
main
方法的类必须是
public

public class DrumKitTestDrive {
    public static void main(String [] args) {

        DrumKit d = new DrumKit();
        d.playSnare();
        d.snare = false;
        d.playTopHat();
        if (d.snare == true) {
            d.playSnare();
        }
    }
}
有关访问修改器的详细信息,请参见


您还尝试运行没有主方法的类
DrumKit
。您必须运行
java DrumKitTestDrive

main
方法在DrumKitTestDrive.java中,而不是在DrumKit.java中。因此,您必须键入
java DrumKitTestDrive
才能运行该程序


请注意,与其他答案所声称的相反,具有
main
的类必须是
public
,这绝对不是强制性的。但是,
main
方法必须是
public
。请参阅Java语言规范。顺便说一句,在JLS的大多数示例中,类没有修饰符。这一点已由.

解决,
main
方法在DrumKitTestDrive.java中,而不是在DrumKit.java中。因此,您必须键入
java DrumKitTestDrive
才能运行该程序


请注意,与其他答案所声称的相反,具有
main
的类必须是
public
,这绝对不是强制性的。但是,
main
方法必须是
public
。请参阅Java语言规范。顺便说一句,在JLS的大多数示例中,类没有修饰符。这一点已经由。

@KOF您能解释一下为什么不接受我的回答吗?我只能猜测,但您的第一句话是错的。@bastet您为什么这么认为?有趣的问题。好吧,打开JLS,查找“public static void main”(“public static void main”)并数一数有多少类是“public”的。我当然更愿意为您指出正确的章节,但我没有发现它有明确的说明(当然也没有相反的说明):唯一规定的约束是
main
必须是公共的。但是,规范中的几十个示例对我来说已经足够好了。我还可以问:为什么让你认为你是对的?@bastet:我还可以问:为什么让你认为你是对的?很抱歉,我问了你。我从来没有使用过没有公共修饰符的主类。@KOF你能解释一下吗你为什么不接受我的答案?我只能猜测,但你的第一句话是错的。@bastet你为什么这么认为?有趣的问题。好吧,打开JLS,查找“public static void main”(“public static void main”)并数一数有多少类是“public”的。我当然更愿意给你指出正确的章节,但我没有发现它被清楚地表述(当然也不是相反):唯一声明的约束是
main
必须是公共的。然而,规范中的几十个示例对我来说已经足够好了。我还可以问:为什么让你认为你是对的?@bastet:我还可以问:为什么让你认为你是对的?对不起,我问了你。我从未使用没有公共修饰符的主类。