我需要能够读取属于我的战争之外的属性文件。我的问题是需要一个解决方案,允许我告诉我的war文件我的属性文件所在的位置。这可以通过bashrc变量和windows env变量来完成吗?
我需要这样做,因为我需要能够将属性文件放在可能远离war文件的不同位置。
我正在努力想出一个解决方案。
答案 0 :(得分:1)
这将取决于属性文件的用途。有些库可以在命令行上设置它,而其他库则允许您在代码中显式加载它们。
如果是后者,System.getProperties()可以证明是有用的,因为它允许您使用'-D'标志读取传递给JVM的属性。例如
java -jar -Dfilelocation="yourfilelocation" yourapp.jar
将使用字符串'yourfilelocation'填充系统属性'filelocation'。然后可以在您的代码中使用它来加载属性文件(或者您想用它做什么)。
由于您在某种应用程序服务器中运行,因此有不同的方法可以实现此目的。对于jetty,您可以将它们放在start.ini中(或者只是在启动jetty时在命令行上传递它们)
其中tomcat使用名为JAVA_OPTS的环境变量,所以
JAVA_OPTS='-Dfilelocation=yourfilelocation' start.sh
在启动tomcat时设置系统属性。
答案 1 :(得分:0)
一种方法是通过传递java参数或设置环境varialble来提供特定位置,并从app中读取它以确定位置
并作为后备(默认)应用程序应宣布查看
${user.home}/appname/some.peroperties
答案 2 :(得分:0)
您可以定义可能的目录列表......并尝试阅读每个目录......
我有一个解决方案,使用默认目录结构读取文件系统中的属性文件。
例如:c:\ properties \ code-suit \ prd \ application.properties
其中: code-suit是由应用程序名称定义的变量; prd是我将使用的环境
祝你好运