当前位置: 代码迷 >> Java相关 >> 为啥有main函数还显示java.lang.NoSuchMethodError: main
  详细解决方案

为啥有main函数还显示java.lang.NoSuchMethodError: main

热度:863   发布时间:2013-11-03 13:24:48.0
为啥有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;
    }
}

    非常感谢……
搜索更多相关的解决方案: package  thread  import  

----------------解决方案--------------------------------------------------------
我觉得可能是这样的,不知道对不对,只是个人看法。
main函数没有声明为static的,貌似我之前看到的main函数都有的。
还有main函数应该没有this指针,你要用的话就先实例化一个对象,调用对象的成员数据或函数。


----------------解决方案--------------------------------------------------------
附议楼上。。。少个 static

----------------解决方案--------------------------------------------------------

此处缺少静态修饰
----------------解决方案--------------------------------------------------------
  相关解决方案