在我的 Tomcat servlet 中,我使用一个 jar 库来查找某些.properties
文件在System.getProperty("user.dir")
.
问题是,当我在不同的服务器上部署 servlet 时,"user.dir"
是不同的。我希望它们是一样的。有没有办法配置这个目录,使其对于每个服务器都相同?
我也跑了catalina.sh version
,以及"user.dir"
目录不会出现在输出中(包括CATALINA_BASE
and CATALINA_HOME
),这很奇怪。某些服务器会发生这种情况。在其他服务器上,"user.dir"
火柴CATALINA_BASE
.
Y̶o̶u̶ ̶c̶o̶u̶l̶d̶ ̶s̶e̶t̶ ̶t̶h̶e̶ ̶p̶r̶o̶p̶e̶r̶t̶y̶ ̶m̶a̶n̶u̶a̶l̶l̶y̶ ̶b̶y̶ ̶m̶o ̶d̶i̶f̶y̶i̶n̶g̶ ̶t̶h̶e̶ ̶̶c̶a̶t̶a̶l̶i̶n̶a̶.̶s̶h̶
̶ ̶a̶n̶d̶ ̶s̶e̶t̶t̶i̶n̶g̶ ̶i̶t̶ ̶t̶h̶e̶r̶e̶.̶ ̶B̶u̶t̶ ̶t̶h̶i̶s̶ ̶a̶p̶p̶r̶o̶a̶c̶h ̶ ̶w̶o̶u̶l̶d̶ ̶b̶e̶ ̶v̶e̶r̶y̶ ̶c̶o̶m̶b̶e̶r̶s̶o̶m̶e̶ ̶s̶i̶n̶c̶e̶ ̶y̶o̶u̶ ̶h̶a̶v̶e̶ ̶t̶o̶ ̶s̶e̶t̶ ̶t̶h̶e̶ ̶v̶a̶l̶u̶e̶ ̶o̶f̶ ̶t̶h̶i̶s̶ ̶f̶o̶l̶d̶e̶r̶ ̶m̶a̶n̶u̶a̶l̶l̶y̶ ̶i̶n̶ ̶e̶v̶e̶r̶y̶ ̶t̶o̶m̶c̶a̶t̶ ̶i̶n̶s̶t̶a̶l̶l̶a̶t̶i̶o̶n̶.̶
这里的段落是错误的。这是因为我天真地忘记了"user.dir"
财产是执行 Java 的工作文件夹(所示示例here) and 即使在执行 JVM 时使用 -D 属性也无法更改它。如果你想改变的值"user.dir"
,您必须更改 Java 执行的文件夹才能启动 tomcat,这可能很容易也可能很困难,具体取决于您的技能,我不推荐这种方法作为解决方案。
A̶n̶o̶t̶h̶e̶r̶ ̶o̶p̶t̶i̶o̶n̶ 最好的选择是定义一个ServletContextListener
并在那里设置一个新属性(以及特定文件夹的值),在contextInitialized
方法。然后,在您的任何 servlet 中,您应该恢复此属性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)