正在加载属性文件WebSphere Liberty

正在加载属性文件WebSphere Liberty,websphere,websphere-liberty,Websphere,Websphere Liberty,我有一个简单的应用程序,它使用Spring从类路径加载属性文件。将此应用程序部署到WebSphere Liberty 8.5.5时,会导致FileNotFoundException 嵌套异常为java.io.FileNotFoundException:无法打开ServletContext资源[/myprops.properties] 这是我的spring@Configuration类: @Configuration @Profile("dev") @PropertySource("classpa

我有一个简单的应用程序,它使用Spring从类路径加载属性文件。将此应用程序部署到WebSphere Liberty 8.5.5时,会导致
FileNotFoundException

嵌套异常为java.io.FileNotFoundException:无法打开ServletContext资源[/myprops.properties]

这是我的spring@Configuration类:

@Configuration
@Profile("dev")
@PropertySource("classpath:/myprops.properties")
public class AppConfigDev extends AppConfig {
  ...
}

我想知道我的属性文件应该驻留在Liberty目录结构中的什么位置?

在注释中使用前缀
classpath:
,表示给定的属性文件将通过
ClassLoader.getResources(…)
调用从WebSphere的
classpath中获取

参考:

您需要为WebSphereLiberty创建一个包含所有属性文件的jar,以便能够加载它们

参考: 1.

2.

您可以在名为
jvm.options
的文件中设置文件的名称/目录,并将其放入
${server.config.dir}/jvm.options

具体示例:
在文件中:
${server.config.dir}/jvm.options

添加以下行:
-DAPP_ENV=PROD


使用:
System.getProperty(“APP_ENV”);->WEB-INF/classes中的PROD

或WEB-INF/lib中的jar应该可以工作。文件在哪里?后来我将其更改为使用“file:myprops.properties”,因为我不想获取类路径的源代码。在Liberty中,当使用相对路径以这种方式获取文件时,我很好奇当前路径是什么。当前工作目录将是服务器输出目录。我最好不要在jar文件中创建和打包属性。相反,我想从文件系统中获取它的源代码。在WAS ND8.5类路径中工作,并从概要文件中的“properties”目录加载属性文件。对于WebSphereLiberty,它失败了,如上所述。后来我把它改成了“file:myprops.properties”,但仍然发现了FileNotFound错误。最好使用相对路径而不是完整路径来查找属性文件。@sleepyj请参阅第一个链接:使用
。中描述了各种变量,可用于避免配置中的绝对路径;e、 例如,
${server.config.dir}/properties
${shared.config.dir}/properties
对于您的环境来说可能是不错的选择。啊,是的,在发布之后才注意到这一点。谢谢我会试试这个。