You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java加载.xls文件未识别 相对/绝对路径均运行失败问题

问题现象

尝试加载存放在同级目录下的.xls文件时运行失败,改用绝对路径尝试也无法正常生效。
出现问题的代码如下:

public class Main {
    public static void main(String[] args) throws FileNotFoundException, IOException {
        // 相对路径写法
        FileInputStream f = new FileInputStream("MP.xls");
        HSSFWorkbook l = new HSSFWorkbook(f);
    }
}

public class Main {
    public static void main(String[] args) throws FileNotFoundException, IOException {
        // 绝对路径写法
        FileInputStream f = new FileInputStream("C:\\Users\\alumno.Alumno-PC\\Documents\\NetBeansProjects\\pruebas xlsx\\src\\pruebasxlsx\\MP.xls");
        HSSFWorkbook l = new HSSFWorkbook(f);
    }
}
错误日志

相对路径执行报错

Exception in thread "main" java.io.FileNotFoundException: MP.xls (系统找不到指定的文件)
at java.base/java.io.FileInputStream.open0(Native Method)
at java.base/java.io.FileInputStream.open(FileInputStream.java:216)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:111)
at pruebasxlsx.Main.main(Main.java:22)

绝对路径执行报错

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/math3/util/ArithmeticUtils
at org.apache.poi.poifs.property.RootProperty.setSize(RootProperty.java:59)
at org.apache.poi.poifs.property.DirectoryProperty.<init>(DirectoryProperty.java:52)
at org.apache.poi.poifs.property.RootProperty.<init>(RootProperty.java:31)
at org.apache.poi.poifs.property.PropertyTable.<init>(PropertyTable.java:58)
at org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java:99)
at org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java:272)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:399)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:381)
at pruebasxlsx.Main.main(Main.java:24)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.math3.util.ArithmeticUtils
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
... 9 more
修复方案
  • 相对路径读取失败:Java项目中FileInputStream读取相对路径的起点是项目启动的工作目录,不是代码文件所在目录。如果文件存放在类路径下,使用getResource()方法读取即可,参考代码:
public class Main {
    public static void main(String[] args) throws Exception {
        URL xlsUrl = Main.class.getClassLoader().getResource("MP.xls");
        if (xlsUrl == null) {
            throw new IllegalArgumentException("类路径下未找到MP.xls文件");
        }
        try (FileInputStream fis = new FileInputStream(new File(xlsUrl.toURI()));
             HSSFWorkbook workbook = new HSSFWorkbook(fis)) {
            // 后续业务逻辑
        }
    }
}
  • 依赖缺失报错:日志明确提示缺少org.apache.commons.math3.util.ArithmeticUtils类,属于Apache Commons Math3组件。你需要将对应版本的commons-math3 jar包添加到项目的依赖库中,Maven项目可直接引入如下配置:
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-math3</artifactId>
    <version>3.6.1</version>
</dependency>

内容的提问来源于stack exchange,提问作者Carlosz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 02:18:03