我正在尝试将我的应用程序部署到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实例。问题主要是为什么生成这样的路径/前缀,以及我是否可以以某种方式使其工作。
答案 0 :(得分:2)
您应该使用Class.getResource()
而不是使用Class.getResourceAsStream()
并以这种方式加载您的属性。使用资源路径只有在部署WAR爆炸时才有效。我不认为部署会在OpenShift上爆炸。
以下内容将是处理它的更好方法。
Properties props = new Properties();
props.load(SimpleClass.class.getResourceAsStream("/myproperties.properties"));