Java拒绝public static void main方法,请求public static void main方法

时间:2015-03-12 02:45:20

标签: java

我正在尝试按照一段代码打开并阅读文本文件。为此,我有一个名为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中找不到main方法,请将main方法定义为:public static void main(String [] args)或JavaFX应用程序类必须扩展javafx.application.Application

知道出了什么问题吗?

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

可能您已在同一个包中声明了自己的If (dt.rows.count == 0) { ' no rows returned, notify user } 类。在这种情况下,Eclipse无法识别main方法中的预期String。将主方法声明编辑为

java.lang.String

并尝试运行它。

答案 2 :(得分:0)

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

enter image description here

在Eclipse中,您可以通过选择

来检查发生了什么
Run > Run Configurations...

&#34; Main&#34;选项卡将显示Eclipse认为是要调用的主要方法,其他选项卡将显示是否有任何参数被发送。

此外,它可能值得运行

Project > Clean

为你的项目。

要检查的疯狂事情:是否还有其他同名的类? 您是否在同一个类文档中定义了多个类?

要检查的另一件事是,导航到类文档,&#34; fileData&#34; (确实应该是FileData,遵循惯例,否则它会增加每个人试图帮助或与你合作的困惑),然后右键单击。右键单击是否提供以下内容?

Run As > 1) Java Application

或者是否表明了这一点?

Run As > Run Configurations...

第一种情况表明它找到了主要方法,在第二种情况下,没有找到主要方法。

可以忽略JavaFX的内容。你根据我看到的任何代码都没有运行JavaFX,所以这个问题没有实际意义。

顺便说一下,在你的main方法中,你在try / catch中捕获了IOException,因此不需要包含&#34;抛出IOException&#34;在主要方法。