首页 > 解决方案 > 读取属性文件时出现 java.nio.file.FileSystemNotFoundException

问题描述

我有一个方法

   private Properties loadProperties() throws IOException {

        Properties configuration = new Properties();
        InputStream inputStream = getClass()
                .getResourceAsStream("/" + RESOURCE_FILE);
        configuration.load(inputStream);

        if (inputStream != null) {
            inputStream.close();
        }

        return configuration;
    }

此方法从属性文件加载属性并返回它。但是我从这个项目构建了阴影 jar 并将阴影 jar 添加到另一个项目中。当项目尝试执行此方法时,它会抛出:

java.nio.file.FileSystemNotFoundException

该项目在 Windows 机器上运行,所以它应该有文件系统。为什么会这样?

标签: java

解决方案


与“Windows 文件系统”无关。您从 jar 文件中读取文件,而 JAVA 要求 jar 文件必须包含您要读取的文件。确保

InputStream inputStream = getClass()
        .getResourceAsStream("/" + RESOURCE_FILE);

RESOURCE_FILE 正确包含在 JAR 文件中。例如 /dir/fileName 其中 RESOURCE_FILE 应该是 dir/fileName


推荐阅读