我需要能够读取位于我的 war 之外的属性文件。我的问题是需要一个解决方案,让我可以告诉我的 war 文件我的属性文件所在的位置。这可以通过 bashrc 变量和 windows 环境变量来完成吗?
我需要这样做,因为我需要能够将属性文件拖放到可能远离 war 文件的不同位置。
我正在努力想出一个解决方案。
最佳答案
这很大程度上取决于属性文件的用途。有些库可以在命令行上设置它,而其他库则允许您在代码中显式加载它们。
对于后者,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 时会设置系统属性。
关于java - .WAR 文件之外的属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15774674/