我想使用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答案 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编写代码时会遇到同样的问题......