【问题标题】:Java rejects public static void main method, requests public static void main methodJava拒绝public static void main方法,请求public static void main方法
【发布时间】:2015-03-12 02:45:19
【问题描述】:

我正在尝试按照一段代码打开和读取文本文件。为此,我有一个名为 readText 的包。我在其中构建了一个 readLocalFile 类来打开和读取文件,以及一个调用它的 main 方法。下面是这两个类。

public class readFileLocal {
    private String path;

    public readFileLocal(String file_path){
        path = file_path;
    }

        int readLines() throws IOException{
            FileReader file_to_read = new FileReader(path);
            BufferedReader lines = new BufferedReader (file_to_read);

            int numberOfLines = 0;
            while(lines.readLine()!= null) { 
                numberOfLines ++; 
            }  

            lines.close();
            return numberOfLines;
        }

        public String[] openFile() throws IOException{  
            FileReader freader = new FileReader (path); 
            BufferedReader textReader = new BufferedReader (freader); 

            int numberOfLines = readLines();   
            String[] textData = new String[numberOfLines]; 

            int i;  /* put all the lines of text from the file to the array*/
            for (i=0; i<numberOfLines; i++){
                textData[i] = textReader.readLine(); 
        }

        textReader.close();
        return textData;
    }
}

然后我有一个主类来调用它。代码如下:

public class fileData {

    public static void main(String[] args) throws IOException{

        String file_name = "F:/Testfile.exl";

        try{
            readFileLocal file = new readFileLocal(file_name);  
            String[] arylines = file.openFile();

            int i;
            for (i=0; i<arylines.length; i++){
                System.out.println(arylines[i]);
            }
        }
        catch(IOException e) { 
            System.out.println(e.getMessage()); 
        }
    }
}

当我运行它时,Eclipse 给了我这个错误消息:

错误:在 readText.fileData 类中找不到主方法,请将主方法定义为:public static void main(String[] args) 或 JavaFX 应用程序类必须扩展 javafx.application.Application

知道出了什么问题吗?

【问题讨论】:

  • 你在项目中是否设置了 readFileLocal 作为启动类?类都大写也是惯例。
  • 什么是“创业班”,我该怎么做? Java新手。谢谢。
  • 在包资源管理器中,尝试右键单击包含 main 方法的类并从那里选择运行。正如 Lachlan 所说,您应该学习并遵循命名约定。 Java 中的命名约定非常强大,以至于不遵循它们会使有经验的程序员稍微感到困惑。 (例如,fileData 看起来像一个变量名,而不是类名。)
  • 您的每个类是否都定义在自己的文件中,并根据它们的包层次结构在正确的文件夹中?
  • 将对命名约定做一点研究。我确实从 main 方法运行并得到了错误。

标签: java


【解决方案1】:

您可能应该开始一个新项目。 Eclipse 认为您正在运行 JavaFX 程序(在这种情况下 filedata 应该扩展 Application)。

只需在没有 JavaFX 的情况下进行正常构建。

【讨论】:

    【解决方案2】:

    很可能,您已经在同一个包中声明了自己的String 类。在这种情况下,Eclipse 在您的主要方法中无法识别预期的java.lang.String。将您的主要方法声明编辑为

    public static void main(java.lang.String[] args)
    

    并尝试运行它。

    【讨论】:

      【解决方案3】:

      我将您的代码加载到我的 Eclipse 副本中,它运行 main 方法没有问题。一件奇怪的事情是,当我保存文件时,我收到一条关于字符被编码为“Cp1252”编码而不是预期的 UTF-8 的消息。我将您的代码从 StackOverflow 剪切并粘贴到 Eclipse 中。也许这与问题有关?

      在 Eclipse 中,您可以通过选择

      来检查正在发生的事情
      Run > Run Configurations...
      

      “Main”选项卡将显示 Eclipse 认为要调用的主要方法,其他选项卡将显示是否有任何参数传入。

      另外,它可能值得运行

      Project > Clean
      

      为您的项目。

      疯狂检查:还有其他同名的类吗? 您是否在同一个班级文档上定义了多个班级?

      要检查的另一件事是,导航到类文档“fileData”(实际上应该是 FileData,遵守约定,否则它会增加每个试图帮助或与您合作的人的困惑),然后右键单击。右键单击是否给您以下?

      Run As > 1) Java Application
      

      或者它显示了这个?

      Run As > Run Configurations...
      

      第一种情况表示找到了main方法,第二种情况表示没有找到main方法。

      关于 JavaFX 的东西可以忽略。根据我看到的任何代码,您没有运行 JavaFX,所以这个问题没有实际意义。

      顺便说一句,在您的 main 方法中,您在 try/catch 中捕获 IOException,因此无需在 main 方法中包含“抛出 IOException”。

      【讨论】:

        猜你喜欢
        • 2016-05-22
        • 2019-05-28
        • 1970-01-01
        • 1970-01-01
        • 2013-03-01
        • 2011-08-03
        • 2011-02-23
        • 1970-01-01
        • 2019-06-15
        相关资源
        最近更新 更多