getResourceAsStream() 适用于 Windows 但不适用于 Linux
getResourceAsStream() works on Windows but not on Linux
我的项目中有以下 class:
package com.test.schedule.payloads;
import com.google.common.base.Charsets;
import org.apache.commons.io.IOUtils;
import org.apache.log4j.Logger;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* Loads payload from file
*/
public class FilePayload{
private static final Logger LOGGER = Logger.getLogger(FilePayload.class);
private final String filename;
public FilePayload(String filename) {
this.filename = filename;
}
public String getAsString() {
try {
return IOUtils.toString(new InputStreamReader(FilePayload.class.getResourceAsStream(filename), Charsets.UTF_8));
} catch (IOException e) {
LOGGER.error("Error while loading file: '" + filename +'\'', e);
return "";
}
}
}
在我的项目(maven one)的资源目录中,我在以下路径中有文件:
com/test/schedule/payloads/schedule-payload.xml
当我在 Windows 上执行文件名为 "schedule-payload.xml" 的 getAsString() 时,一切正常。但是当在 Linux 服务器上执行相同的代码时,它 returns 在 getResourceAsStream() 上为空。我不知道如何修复它,所以代码在 Windows 和 Linux 上都有效。任何帮助将不胜感激。
检查一下,此文件 "com/test/schedule/payloads/schedule-payload.xml" 路径上的所有内容都是小写的,因为 linux 路径区分大小写,而 windows 路径不区分大小写。
我的项目中有以下 class:
package com.test.schedule.payloads;
import com.google.common.base.Charsets;
import org.apache.commons.io.IOUtils;
import org.apache.log4j.Logger;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* Loads payload from file
*/
public class FilePayload{
private static final Logger LOGGER = Logger.getLogger(FilePayload.class);
private final String filename;
public FilePayload(String filename) {
this.filename = filename;
}
public String getAsString() {
try {
return IOUtils.toString(new InputStreamReader(FilePayload.class.getResourceAsStream(filename), Charsets.UTF_8));
} catch (IOException e) {
LOGGER.error("Error while loading file: '" + filename +'\'', e);
return "";
}
}
}
在我的项目(maven one)的资源目录中,我在以下路径中有文件:
com/test/schedule/payloads/schedule-payload.xml
当我在 Windows 上执行文件名为 "schedule-payload.xml" 的 getAsString() 时,一切正常。但是当在 Linux 服务器上执行相同的代码时,它 returns 在 getResourceAsStream() 上为空。我不知道如何修复它,所以代码在 Windows 和 Linux 上都有效。任何帮助将不胜感激。
检查一下,此文件 "com/test/schedule/payloads/schedule-payload.xml" 路径上的所有内容都是小写的,因为 linux 路径区分大小写,而 windows 路径不区分大小写。