删除' CATALINA_HOME'用户变量或更新' CATALINA_HOME'名称为' CATALINA_HOME_1'使用java代码

时间:2014-02-21 07:06:55

标签: java tomcat7

我想使用java代码删除'CATALINA_HOME'。如果有人知道这类问题,请告诉我。

假设已经设置了'CATALINA_HOME'= C:\ Program Files \ Apache

安装软件时,我的软件应该使用我的自定义tomcat7 那个商店在不同的位置。

'CATALINA_HOME'= D:\ Installer \ Apache

运行软件时,它找到tomcat这个位置'CATALINA_HOME'= C:\ Program Files \ Apache但我的位置是 'CATALINA_HOME'= D:\ Installer \ Apache

1 个答案:

答案 0 :(得分:1)

  

我想使用java代码删除'CATALINA_HOME'。

抱歉,但你不能。程序(至少在Linux / Unix / Solaris上)无法修改其父shell的环境。最多,程序只能查看其父级环境变量的快照 ...就像父级fork是子进程时一样。

(Windows变量的工作方式略有不同,但我认为同样的限制适用于......)

Java可以做的唯一事情(可靠/可移植)是更改Java进程的子进程将继承的环境变量。您可以使用ProcessBuilder

执行此操作

现在理论上,程序可以尝试修改变量值的来源:

  • 在类似Unix的系统上,他们经常来自shell的一个RC文件;例如$HOME/.profile$HOME/.bashrc等等......取决于shell。或者可以在启动Tomcat的“init”脚本中设置变量。

  • 在Windows系统上,可能来自注册表,或BAT文件或......

问题是双重的:

  • 不可能完全确定价值的真正来源。

  • 即使您可以确定,更改值的来源也不会影响变量的相应shell的当前值。


注意:这不是Java的缺点。使用C,C ++,Python编写代码时会遇到同样的问题......