gpt4 book ai didi

java - Openshift this.getClass().getResource() 路径可能不正确

转载 作者:行者123 更新时间:2023-11-30 03:55:20 25 4
gpt4 key购买 nike

我正在尝试将我的应用程序部署到 openshift,但运行它时遇到问题。该应用程序在本地部署到完全相同版本的 JBoss(JBoss AS 7.1.1 Final)并且可以正常工作,而部署到 openshift 时则无法工作。我没有使用任何缩放。

问题出在代码示例上:

  String s= SimpleClass.class.getResource("/myproperties.properties").getPath();
prop.load(new FileInputStream(s));

当本地部署到 JBoss AS 时,它的工作方式与预期一致。但是,当我将其部署到 openshift 实例时,出现异常:

java.io.FileNotFoundException: /content/Mailinglist.war/WEB-INF/classes/myproperties.properties (No such file or directory)
java.io.FileInputStream.open(Native Method)
java.io.FileInputStream.<init>(FileInputStream.java:146)
java.io.FileInputStream.<init>(FileInputStream.java:101)
mailinglistonline.server.export.util.PropertiesParser.parseDatabaseConfigurationFile(PropertiesParser.java:15)

编辑:

Mailinglist.war/WEB-INF/classes/myproperties.properties 后缀是正确的,与我本地的相同,但是 /content 前缀相当奇怪,因为 openshift 中可能不存在/content 目录。该路径可能应该指向部署该 .war 的 JBoss 实例。问题主要是为什么生成这样的路径/前缀以及我是否能以某种方式让它工作。

最佳答案

您应该使用 Class.getResourceAsStream() 而不是使用 Class.getResource() 并以这种方式加载属性。仅当部署 WAR 爆炸时,使用资源路径才有效。我不认为 OpenShift 上的部署会呈爆炸式增长。

像下面这样的东西将是更好的处理方法。

Properties props = new Properties();
props.load(SimpleClass.class.getResourceAsStream("/myproperties.properties"));

关于java - Openshift this.getClass().getResource() 路径可能不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23369669/

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