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 路径不区分大小写。