【问题标题】:Can't find main(String[]) method in class: TapeDeck. The main method is in the other class which runs the program在类中找不到 main(String[]) 方法:TapeDeck。主要方法在运行程序的另一个类中
【发布时间】:2019-09-11 16:13:54
【问题描述】:

我有两节课。当我将类 TapeDeckTestDrive 首先放在文本编辑器上时,它运行良好。当我把TestDrive类放在第一位时,它给出了找不到主类的错误。这是为什么呢?

class TapeDeck {
    boolean canRecord = false;
    void playTape(){
        System.out.println("tape playing");
    }
    void recordTape(){
        System.out.println("tape recording");
    }
}

class TapeDeckcTestDrive{
    public static void main(String[] args){
        TapeDeck t = new TapeDeck();
        t.canRecord = true;
        t.playTape();

        if (t.canRecord == true) {
            t.recordTape();
        }
    }
}

此格式错误

VS

以下工作正常:

class TapeDeckcTestDrive{
    public static void main(String[] args){
        TapeDeck t = new TapeDeck();
        t.canRecord = true;
        t.playTape();

        if (t.canRecord == true) {
            t.recordTape();
        }
    }
}

class TapeDeck {
    boolean canRecord = false;
    void playTape(){
        System.out.println("tape playing");
    }
    void recordTape(){
        System.out.println("tape recording");
    }
}

【问题讨论】:

  • 你的java类(文件)名是什么?
  • 解决这个问题的简单方法,也是最好的方法是每个文件有一个类。
  • @Abdul Hussain 请告诉文件名
  • 它运行良好,它给出了错误:什么是“它”。你如何执行你的应用程序?
  • 这不是执行课程的最佳方式。首先你用 javac 编译你的代码。然后使用 java 并传递包含 main 方法的类的完全限定名称。

标签: java methods main


【解决方案1】:

在某些 JDK 中,JVM 首先处理入口点函数,因此需要先编写它,然后再编写其余代码。由于 main 函数是我们的入口函数,所以必须先编写。

【讨论】:

    【解决方案2】:

    您可以通过两种方式运行 java 程序。

    1. 直接运行java程序

        java example_program.java
      

      在这种类型中,编译和执行发生在运行时。那是 字节码立即生成并执行(作为解释器工作) 所以,你必须先使用超类(包含主方法),然后再使用其他 复合类。

    注意: 不会生成 .class 文件。这意味着,它将在内部生成字节码并执行。程序员无法查看类文件。

    1. 在第二种类型中,首先,你应该编译,

       javac example_program.java 
      

    它将生成 example_program.class 。然后,使用,执行类文件,

         java example_program
    

    在这里,编写类的顺序不受影响。您可以按任何顺序编写类。它会正常工作的。

    【讨论】:

      【解决方案3】:

      首先,您必须使用javac 编译文件。 然后,您必须运行该文件。

      编写 main 的类名。

      javac filename.java
      java classname
      

      【讨论】:

        【解决方案4】:

        使用命令编译代码后:

        javac fileName.java
        

        通过仅指定 fileName 而不带 .java 扩展名来运行 java .class 文件

        java fileName
        

        如果您使用fileName.java,它将不会运行特定的.class 文件;它将尝试解释.java 文件。如果要解释 .java 文件,则父类必须包含 main(String[]) 方法。

        【讨论】:

          【解决方案5】:

          我将它分成两个文件,并将 public 添加到类/方法以及布尔值。现在代码运行。

          【讨论】:

            猜你喜欢
            • 2021-10-24
            • 2014-04-24
            • 1970-01-01
            • 2014-05-03
            • 2019-01-15
            • 2018-04-18
            • 1970-01-01
            • 2011-11-30
            • 2019-06-15
            相关资源
            最近更新 更多