java - 读取属性文件时出现 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 机器上运行,所以它应该有文件系统。为什么会这样?
解决方案
与“Windows 文件系统”无关。您从 jar 文件中读取文件,而 JAVA 要求 jar 文件必须包含您要读取的文件。确保
InputStream inputStream = getClass()
.getResourceAsStream("/" + RESOURCE_FILE);
RESOURCE_FILE 正确包含在 JAR 文件中。例如 /dir/fileName 其中 RESOURCE_FILE 应该是 dir/fileName