【问题标题】:java system.getenv(HOME) returns tomcat6 directoryjava system.getenv(HOME) 返回tomcat6目录
【发布时间】:2011-06-19 05:23:21
【问题描述】:

题主说的你好

System.getenv("HOME")

在我的动作类(struts2)中并将其部署为

/var/lib/tomcat6/webapps/

当我上课时,getenv HOME 返回

/var/lib/tomcat6

谁能告诉我发生了什么事?我什至在一个独立的 java 类上对其进行了测试。返回 home 的正确值。在 shell 上也试过echo $HOME,它给出了正确的输出。

在 Ubuntu 10.04 上运行。

【问题讨论】:

  • 你的runscript设置了吗?
  • @Mark 没有完全关注你.. runscript as in ..
  • 您是作为服务运行tomcat,还是使用shell脚本启动它?
  • tomcat是如何上线的?使用 init.d 脚本?用手?使用什么用户来运行它?该用户的 $HOME 是什么?您期望 $HOME 的价值是多少?
  • Tomcat 是通过执行“sudo service tomcat6 start”来启动的。你认为 sudo 有问题吗? $HOME 应该给 "/home/infinishare" 而不是它给我 /var/lib/tomcat6

标签: java variables ubuntu environment


【解决方案1】:

我想我知道问题出在哪里了。我的项目部署了“tomcat6 tomcat6”的权限,所以当我getenv HOME时,它给了我tomcat的家。我对吗?

没有。

问题在于您的 tomcat6 服务被配置为以“tomcat”用户身份运行。 (通常在 init.d/tomcatd 脚本中有一个变量可以执行此操作……)这是出于安全原因。除非您进行了适当的风险评估,否则不要更改它。

您真正需要做的是更改您的 Web 应用程序,使其不期望 $HOME 成为 >>your

【讨论】:

  • 好的,我现在明白了。我想我得和我的前辈谈谈,因为外部文件夹被用于 webapp 的特定功能。感谢您的精彩解释!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-16
  • 1970-01-01
  • 2012-11-03
  • 1970-01-01
  • 2015-02-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多