【问题标题】:Why am I getting an error for main method not being found when running an example program?为什么在运行示例程序时找不到 main 方法的错误?
【发布时间】:2016-04-21 06:38:36
【问题描述】:

我正在尝试运行一个程序(顺便说一句,这不是我的,我试图将其理解为作为初学者学习基本 Java 的一种方式),但我从 Eclipse 中得到一个错误说明:

错误:在类 Door 中找不到主方法,请将主方法定义为: 公共静态无效主要(字符串 [] 参数) 或者 JavaFX 应用程序类必须扩展 javafx.application.Application

但是,我在那里看到public static void main(String[] args)? 我首先创建了一个项目名称为“Door”的 Java 项目,选择了“使用执行环境 JRE:JavaSE-1.8”,并选择了“使用项目文件夹作为源代码和类文件的根目录”。然后,我创建了一个 Java 类,其中 Source 文件夹和名称为“Door”,我选择 public 作为修饰符,并且没有选择方法螺柱。我是否选择了错误的选项?

代码:

import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.io.*;
import java.awt.event.*;
import java.util.Scanner;

public class TestDoor
{
static Door Door1;
static Door Door2;
static Door Door3;

static Scanner input=new Scanner(System.in);

public static void main(String[] args)
{
    Door1=new Door("Enter");
    Door2=new Door("Exit");
    Door3=new Door("Treasure");

    Door1.setOpen();
    Door1.setUnlocked();
    Door3.setOpen();

    boolean done = false;
    int choice;

    do
    {
        chooseDoor();
        choice = input.nextInt();

        switch(choice)
        {
            case 1:
                DOOR1();
                break;
            case 2:
                DOOR2();
                break;
            case 3:
                DOOR3();
                break;
            case 4:
                System.out.println("\n\n---------- Door Status ----------\n");

                if(Door1.isLocked()==true)
                {
                    System.out.print("ENTER door is LOCKED and ");
                }

                else
                {
                    System.out.print("ENTER door is UNLOCKED and ");
                }

                if(Door1.isClosed()==true)
                {   
                    System.out.print("CLOSED\n\n");
                }

                else
                {
                    System.out.print("OPEN\n\n");
                }

                if(Door2.isLocked()==true)
                {
                    System.out.print("EXIT door is LOCKED and ");
                }

                else
                {
                    System.out.print("EXIT door is UNLOCKED and ");
                }

                if(Door2.isClosed()==true)
                {   
                    System.out.print("CLOSED\n\n");
                }

                else
                {
                    System.out.print("OPEN\n\n");
                }

                if(Door3.isLocked()==true)
                {
                    System.out.print("TREASURE door is LOCKED and ");
                }

                else
                {
                    System.out.print("TREASURE door is UNLOCKED and ");
                }

                if(Door3.isClosed()==true)
                {   
                    System.out.print("CLOSED\n\n");
                }

                else
                {
                    System.out.printf("OPEN\n\n");
                }

                System.out.println("---------- Door Status ----------\n");
                break;
            default:
                System.out.println("<<<< Out of choice range select again >>>>\n");
            }

    }while(!done);
}

public static void Choices()
{
    System.out.println("\n--------- choices ---------\n\n");
    System.out.println("1. OPEN door");
    System.out.println("2. CLOSE door");
    System.out.println("3. LOCK door");
    System.out.println("4. UNLOCK door");
    System.out.println("5. Check current door status");
    System.out.println("6. Go Back to choose another door");
    System.out.print("\n\nEnter Choice: ");
}

public static void chooseDoor()
{
    System.out.println("\n\n--------- Choose Your Door --------\n\n");
    System.out.println("1. Enter door");
    System.out.println("2. Exit door");
    System.out.println("3. Treasure door");
    System.out.println("4. All Door Statuses");
    System.out.print("\n\nEnter Choice: ");
}

public static void DOOR1()
{
    int choice;
    boolean done = false;
    do
    {
        Choices();
        choice=input.nextInt();

        /*for(int i=0;i<6;i++)
        {
            System.out.println();
        }*/

        switch(choice)
        {
            case 1:
                Door1.open();
                break;
            case 2:
                Door1.close();
                break;
            case 3:
                Door1.lock();
                break;
            case 4:
                Door1.unlock();
                break;
            case 5:
                if(Door1.isLocked()==true)
                {
                    System.out.println("---------- The ENTER Door Status ----------\n");
                    System.out.print("Door is LOCKED and ");
                }
                else
                {
                    System.out.println("---------- The ENTER Door Status ----------\n");
                    System.out.print("Door is UNLOCKED and ");
                }
                if(Door1.isClosed()==true)
                {   
                    System.out.print("CLOSED\n\n");
                    System.out.println("---------- The ENTER Door Status ----------\n");
                }
                else
                {
                    System.out.printf("OPEN\n\n");
                    System.out.println("---------- The ENTER Door Status ----------\n");
                }
                break;
            case 6:
                done = true;
                break;
            default:
                System.out.print("<<<< Out of choice range select again >>>>\n");
            }
    }while(!done);
}

public static void DOOR2()
{
    int choice;
    boolean done = false;

    do
    {
        Choices();
        choice=input.nextInt();

            /*for(int i=0;i<6;i++)
            {
                System.out.println();
            }*/
        switch(choice)
        {   
            case 1:
                Door2.open();
                break;
            case 2:
                Door2.close();
                break;
            case 3:
                Door2.lock();
                break;
            case 4:
                Door2.unlock();
                break;
            case 5:
                if(Door2.isLocked()==true)
                {
                    System.out.println("---------- The EXIT Door Status ----------\n");
                    System.out.print("Door is LOCKED and ");
                }
                else
                {
                    System.out.println("---------- The EXIT Door Status ----------\n");
                    System.out.print("Door is UNLOCKED and ");
                }
                if(Door2.isClosed()==true)
                {   
                    System.out.print("CLOSED\n\n");
                    System.out.println("---------- The EXIT Door Status ----------\n");
                }
                else
                {
                    System.out.printf("OPEN\n\n");
                    System.out.println("---------- The EXIT Door Status ----------\n");
                }
                break;
            case 6:
                done = true;
                break;
            default:
                System.out.print("<<<< Out of choice range select again >>>>\n");
        }
    }while(!done);
}

public static void DOOR3()
{
    int choice;
    boolean done = false;

            do
            {
                Choices();
                choice=input.nextInt();

                /*for(int i=0;i<6;i++)
                {
                    System.out.println();
                }*/

                switch(choice)
                {
                    case 1:
                        Door3.open();
                        break;
                    case 2:
                        Door3.close();
                        break;
                    case 3:
                        Door3.lock();
                        break;
                    case 4:
                        Door3.unlock();
                        break;
                    case 5:
                        if(Door3.isLocked()==true)
                        {
                            System.out.println("---------- The TREASURE Door Status ----------\n");
                            System.out.print("Door is LOCKED and ");
                        }
                        else
                        {
                            System.out.println("---------- The TREASURE Door Status ----------\n");
                            System.out.print("Door is UNLOCKED and ");
                        }
                        if(Door3.isClosed()==true)
                        {   
                            System.out.print("CLOSED\n\n");
                            System.out.println("---------- The TREASURE Door Status ----------\n");
                        }
                        else
                        {
                            System.out.printf("OPEN\n\n");
                            System.out.println("---------- The TREASURE Door Status ----------\n");
                        }
                        break;
                    case 6:
                        done = true;
                        break;
                    default:
                        System.out.print("<<<< Out of choice range select again >>>>\n");
                }
            }while(!done);
}
}

【问题讨论】:

  • 您发布的代码适用于TestDoor 类,而不是Door
  • 对不起,我的意思是 TestDoor 用于项目/文件命名。
  • 你的java文件名是什么?
  • “门”在哪里?

标签: java eclipse


【解决方案1】:

看来您复制了一个不完整的示例。 您发布的课程使用不存在的 Door 类的对象! 在您复制的源中查找其他 sn-ps。这里没有Door 类。

【讨论】:

    【解决方案2】:

    Door 类应该有一个 main 方法。您还没有发布该类,因此我们无法查看它,但是如果您在 Door 中定义一个 main 方法,您的问题应该可以解决。

    【讨论】:

      【解决方案3】:

      有时此错误可能来自构建路径问题。如果您在程序或任何其他库中使用 JavaFX,请确保将 jar 正确添加到构建路径。为此,请右键单击项目 -> 属性 -> 构建路径 -> 添加外部 Jar。

      另外,如果您想始终了解您的项目遇到了什么样的问题,我建议您查看问题视图。如果在你的 Eclipse 中没有启用它,你可以通过进入 Window -> View 来使其可见。

      【讨论】:

        猜你喜欢
        • 2021-10-24
        • 2021-07-01
        • 2015-09-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        相关资源
        最近更新 更多