缺省构造函数不能处理隐式超构造函数抛出的异常类型 IOException。必须定义显式构造函数

int lastnum = getNum(source.getProperty("fileName"));
public static int getNum(String Filename) throws IOException {

    InputStream myxls;
    myxls = new FileInputStream(Filename);
    sr = new XSSFWorkbook(myxls);
    XSSFSheet sheet = sr.getSheetAt(0);// 第一个工作表
    return sheet.getLastRowNum();// 获取第一个工作表的行数
}

第一行报错:缺省构造函数不能处理隐式超构造函数抛出的异常类型 IOException。必须定义显式构造函数
    public FileInputStream(String name) throws FileNotFoundException {
        this(name != null ? new File(name) : null);
    }

第一行它报的是FileNotFoundException
这个没有错误啊
你的流打开了是不是没有关闭阿

再次确认下:
你这个方法应该没有问题
那么可能是 你定义的这个方法被谁调用了

getNum这个方法抛出了IOException

调用的地方是不是不能有这个IOException阿
我怀疑你在哪个构造函数中调用这个方法了

那你这个 lastNum又在哪里用了。
缺省的构造函数我觉得是你自己写的这个类的

察看一下调用链,自己的构造器里面有没有用到这个调用链

解决了 我这么写就没事了
int lastnum = getNum(source.getProperty("fileName"));
public static int getNum(String Filename) {
try {
InputStream myxls;
myxls = new FileInputStream(Filename);
sr = new XSSFWorkbook(myxls);
XSSFSheet sheet = sr.getSheetAt(0);// 第一个工作表
return sheet.getLastRowNum();// 获取第一个工作表的行数
} catch (IOException e) {
// TODO: handle exception
return 0;
}
}

首先恭喜下
从解决方法看应该是跑出的异常导致的.

调用这个int lastnum = getNum(source.getProperty("fileName"));

的函数可能对外的声名是没有异常的