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