需要加载哪些参数&执行类?

时间:2017-05-19 06:48:19

标签: java

我有以下Java类文件,我试图让一个类文件(Loadanotherfile.java)加载另一个类文件。加载的类文件(FileData.java)依次加载文本文件。

注意:单独运行FileData文件可以正常工作,所以我不认为这是问题所在。

见下文:

FileData.java:

package test;

import java.io.IOException;


public class FileData {

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

       String file_name = "C:/Java/test.txt";

       try {
          ReadFile file = new ReadFile(file_name);
          String[] anyLines = file.OpenFile();

          int i;
          for (i=0; i < anyLines.length; i++) {
              System.out.println(anyLines[i]);

          }

       } 
       catch (IOException e) {
          System.out.println( e.getMessage() );

       }

   }

}

Loadanotherfile.java:

package test;

import java.io.IOException;

public class Loadanotherfile {

   public static void main(String[] args) {

       FileData.main(String[] args) throws IOException;  
   }

}

因此Loadanotherfile.java调用FileData类中的main方法。起初我只是将FileData.main()放在Loadanotherfile类中,但结果错误消息说我需要字符串参数,所以我输入了常见的&#34; String [] args&#34;,如图所示。

但是我得到了#34; .class预期&#34;或者&#34;要求:价值,发现:等级&#34;错误。 然后我试图传递

String[] anyLines 

作为论据,但这也没有奏效。

那么需要传递哪些参数,以便FileData在Loadanotherfile中执行?

我是Java新手,一周前开始:0所以提前谢谢

3 个答案:

答案 0 :(得分:0)

你不需要任何参数,因为你没有使用它。你可以尝试:

package test;

public class Loadanotherfile throws Exception{
    public static void main(String[] args) {
        FileData.main(args);
    }
}

OR

package test;
public class Loadanotherfile throws Exception{
    public static void main(String[] args) {
        FileData.main(null);
    }
}

答案 1 :(得分:0)

试试这个:

FileData.main(new String[]{});

答案 2 :(得分:0)

问题是您使用语法来声明一个方法来调用此行中的方法

 FileData.main(String[] args) throws IOException;

Loadanotherfile的主要方法的参数传递给FileData main方法的主要方法

 // just pass the arguments of the Loadanotherfile main method.
 FileData.main(args);

 // pass a new empty string array 
 FileData.main(new String[]{});

它会起作用。

您也可以将null传递给FileData主方法,但不推荐这样做,因为如果您使用参数也必须检查null

 // possible but not recommended
 FileData.main(null);

但我想提出另一种方法。这样做&#34;纠正&#34;办法。 为FileData使用有用的名称 - 实际上它就像FileDataService。要阅读这些行,请使用Files包中的java.nio.files,并使用代表loadFile代码的方法名称。只是为了有一个主要的方法,我在这里添加了主要方法。

import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.util.List;

public class FileDataService {

    public static void main(String...args) {
        new FileDataService().loadData();
    }

    public void loadData() {

        try {

            File file = new File("C:/Java/test.txt");
            List<String> anyLines = Files.readAllLines(file.toPath(), Charset.defaultCharset());

            for (String line : anyLines) {
                System.out.println(line);

            }

        } catch (IOException e) {
            System.out.println(e.getMessage());

        }

    }
}

LoadAnotherClass中,您可以写

public class LoadAnotherClass {

    public static void main(String[] args) {
        new FileDataService().loadData();
        // or even
        FileDataService.main(new String[]{});
    }

}