我的项目中有以下类(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 服务器上执行相同的代码时,它会在 getResourceAsStream() 上返回 null。我不知道如何修复它,以便代码可以在 Windows 和 Linux 上运行。任何帮助将不胜感激。
最佳答案
检查此文件“com/test/schedule/payloads/schedule-payload.xml”路径上的所有内容是否都是小写,因为 Linux 路径区分大小写,而 Windows 路径不区分大小写。
关于java - getResourceAsStream() 适用于 Windows,但不适用于 Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32712447/