为啥有main函数还显示java.lang.NoSuchMethodError: main
希望有人能帮我找找错误,水平太差,实在弄不懂哪有问题……题目:编写一个程序,读取一个list.txt文件,list.txt文件中每一行是一个文件名,程序将文件读取进来并且保存到ArrayList中,并且挨个复制里面的文件存放到同级目录下的bak目录下面。
要求:
list.txt文件不存在或者为空给出提示。(使用File.exists())
list.txt文件中所列出的文件不存在给出提示。
运行结果:
java.lang.NoSuchMethodError: main
Exception in thread "main"
ReadList.java
package readCopyFile;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class ReadList{
public ArrayList<FileCpy> fileList;
private String src;
private String bak;
public void main(String[] args) throws IOException {
BufferedReader br = null;
//捕捉异常,如果list.txt不存在,则执行catch,输出“没有找到该文件!”
try {
br = new BufferedReader(new FileReader("list.txt"));
String line = "";
while ((line = br.readLine()) != null) {
System.out.println(line);
}
reader("list.txt");//将文本内容转化为动态数组FileList中元素
} catch (FileNotFoundException e){
e.printStackTrace();
System.out.println("没有找到该文件!");
}
if(FileCpy.copyDir(src, bak)){
for(FileCpy fil:this.fileList){
fil.copyFile();
}
} else{
System.out.println("不能找到src目录");
}
}
//读取文件中的内容,将每行的文件作为动态数组中的元素
public void reader(String fileName) throws IOException{
FileReader file=new FileReader(fileName);
BufferedReader br=new BufferedReader(file);
this.fileList=new ArrayList<FileCpy>();
while(br.readLine()!=null){
FileCpy file1=new FileCpy(br.readLine());
this.fileList.add(file1);
}
}
}
FileCpy.java
package readCopyFile;
import java.io.*;
public class FileCpy {
private String bak;
private String fileName;
public FileCpy(String name){
setFileName(name);
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getFileName() {
return fileName;
}
//复制文件
public void copyFile()throws IOException{
File first=new File(this.fileName);
File second=new File(bak,this.fileName);
if(!first.exists()) {
System.out.println("该文件不存在!");
} else{
FileInputStream fis = new FileInputStream(first);
byte[] buff = new byte[1024];
FileOutputStream fos = new FileOutputStream(second);
while (fis.read(buff) != -1) {
fos.write(buff);
}
}
}
//判断src目录是否存在,建立bak目录,返回是否存在src
public static boolean copyDir(String src,String bak){
File srcDir=new File(src);
File bakDir=new File(bak);
if(srcDir.exists()){
if(!bakDir.exists()){
bakDir.mkdir();
}
}
return true;
}
}
非常感谢……
----------------解决方案--------------------------------------------------------
我觉得可能是这样的,不知道对不对,只是个人看法。
main函数没有声明为static的,貌似我之前看到的main函数都有的。
还有main函数应该没有this指针,你要用的话就先实例化一个对象,调用对象的成员数据或函数。
----------------解决方案--------------------------------------------------------
附议楼上。。。少个 static
----------------解决方案--------------------------------------------------------
此处缺少静态修饰
----------------解决方案--------------------------------------------------------