【问题标题】:getResourceAsStream works differently on Mac OSX vs. Windows 7?getResourceAsStream 在 Mac OSX 和 Windows 7 上的工作方式不同?
【发布时间】:2009-11-25 03:30:51
【问题描述】:

我有一组依赖于 test.properties 文件的单元测试用例。当我使用 Maven('mvn test')在 Mac OSX 或 Linux 下运行测试时,它们运行良好。但是在 Windows 7 下运行时,他们找不到该文件,除非我将其直接复制到类文件夹中。返回属性的代码有以下两种方法:

private void loadProperties() {
    try {
         properties.load(HibernateTestCase.class.getResourceAsStream(getPropertiesFilePath()));
    } catch (Exception ioExc) {
        ioExc.printStackTrace();
    }
}

private String getPropertiesFilePath() {
    return File.separator + "test.properties";
}

这里真正的交易是什么?是不是文件路径在某处设置错误?提前致谢!

【问题讨论】:

  • 该文件在 Mac 和 Linux 下工作时位于何处?不同环境中的类路径是什么。代码中的假设是该文件位于与 HibernateTestCase.class 相同的 jar 或 dir 的根目录中。此外,不要费心使用 File.separator,因为所有 Java 平台都会接受“/”来解决资源解析(和其他事情)。事实上,如果这对她造成了问题,我也不会感到惊讶,尽管我对此表示怀疑。

标签: java windows unit-testing macos properties


【解决方案1】:

资源名称中的分隔符始终为“/”。 File.separator 因平台而异(在 UNIX 变体上通常为 /,在 Windows 上则不会)。

【讨论】:

  • 将我的代码中的最后一行从 File.separator + "test.properties" 替换为 "/test.properties" 填补了账单。谢谢!
【解决方案2】:

您的类路径不同,或者您使用的是具有不同分辨率特征的不同类加载器。

【讨论】:

    猜你喜欢
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    • 2020-07-11
    相关资源
    最近更新 更多