gpt4 book ai didi

linux - InputStreamReader getResourceAsStream 可以在 Linux 中运行吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:41:29 25 4
gpt4 key购买 nike

我在 Java EE 应用程序中有这段代码用于读取属性文件。尽管 Myservice.properties 位于 WEB-INF/classes 文件夹下,但在 Linux 环境中不会读取这些属性,但它在 Windows 环境中运行良好。

InputStreamReader fMainProp = new InputStreamReader(this.getClass().getResourceAsStream("/Myservice.properties"));

以上仅适用于 Windows 吗?

MyWeb() {
prop = new Properties();
try {
InputStreamReader fMainProp = new InputStreamReader(this.getClass().getResourceAsStream("/Myservice.properties"));
prop.load(fMainProp);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
}

最佳答案

该代码是否有效取决于在您的代码中加载由 getClass() 表示的调用类的类加载器是否可以访问 /WEB-INF/classes .显然,有问题的类本身不在 /WEB-INF/classes 中,或者有一个副本放置在类路径中的其他地方,并且 Linux 环境中使用的服务器制造/版本使用稍微不同的类加载器层次结构比在 Windows 环境中使用的服务器制造/版本。

事实是,如果你不能保证属性文件是由与调用类相同的类加载器加载的,那么你不应该尝试通过调用类的类加载器来获取它,而应该通过上下文类来获取它当前线程的加载器。它可以访问所有内容。

prop.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("Myservice.properties"));

请注意,对于此类加载器,路径不能是相对的。所以不要以斜杠开头。

关于linux - InputStreamReader getResourceAsStream 可以在 Linux 中运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8556750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com