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

时间:2014-04-29 15:59:31

标签: java jboss7.x openshift

我正在尝试将我的应用程序部署到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实例。问题主要是为什么生成这样的路径/前缀,以及我是否可以以某种方式使其工作。

1 个答案:

答案 0 :(得分:2)

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

以下内容将是处理它的更好方法。

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