您好主题为
System.getenv("HOME")
在我的动作类(struts2)中并将其作为战争部署在
中/var/lib/tomcat6/webapps/
当我上课时,getenv HOME返回
/var/lib/tomcat6
谁能告诉我发生了什么事?我甚至在一个独立的java类上测试它。恢复home的正确值。在shell上也尝试了它echo $HOME
并且它提供了正确的输出。
在Ubuntu 10.04上运行。
答案 0 :(得分:1)
我认为我得到的问题是什么..我的项目部署了“tomcat6 tomcat6”的权限所以当我getenv HOME时,它给了我tomcat回家。我对吗?
没有
问题是您的tomcat6服务配置为以“tomcat”用户身份运行。 (在init.d / tomcatd脚本中通常有一个变量来执行此操作...)这是安全原因。除非你做了适当的风险评估,否则不要改变它。
您真正需要做的是更改您的网络应用程序,以便它不会指望$ HOME为>>您的<<主目录。而是创建一个特定于webapp的属性文件,该文件提供此外部(到tomcat)目录的位置。或者更好(和最佳实践!)更改您的应用程序,以便它根本不需要引用外部目录。