在我的Tomcat servlet中,我正在使用一个jar库来查找.properties
中的某些System.getProperty("user.dir")
文件。
问题在于,当我在不同的服务器上部署servlet时,"user.dir"
是不同的。我希望他们是一样的。有没有办法配置这个目录,以便每个服务器都相同?
我也运行了catalina.sh version
,"user.dir"
目录没有出现在输出中(包括CATALINA_BASE
和CATALINA_HOME
),这很奇怪。某些服务器会发生这种情况。在其他服务器上,"user.dir"
匹配CATALINA_BASE
。
答案 0 :(得分:5)
,你可以将该属性设置手动通过修改̶̶c̶a̶t̶a̶l̶i̶n̶a̶.̶s̶h̶
̶并将其设置̶t̶h̶e̶r̶e̶.̶但是,这种方法将是非常̶c̶o̶m̶b̶e̶r̶s̶o̶m̶e̶因为你必须设置值的手动从此文件夹中的每个TOMCAT̶i̶n̶s̶t̶a̶l̶l̶a̶t̶i̶o̶n̶.̶< / p>
这里的段落错了。这是因为我天真地忘记"user.dir"
属性是the working folder where Java was executed(示例显示为here)和you cannot change it not even with -D property when executing the JVM。如果要更改"user.dir"
的值,则必须更改Java执行的文件夹以启动tomcat,这可能很容易或很难,具体取决于您的技能,我不建议将此方法用作溶液
A̶n̶o̶t̶h̶e̶r̶̶o̶p̶t̶i̶o̶n̶最好的选择是在ServletContextListener
方法中定义contextInitialized
并在那里设置一个新属性(以及作为特定文件夹的值)。然后,在任何servlet中,您应该恢复此属性。