JAVA (tomcat) 中的环境变量
Environment Variables in JAVA (tomcat)
我的/etc/environment
如下
APP="/opt/apps/"
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
JAVA_HOME="/usr/lib/jvm/java-8-oracle"
我已经在我的机器上获取了 source /etc/environment
。当我在终端
上键入 echo $APP
时,我能够得到输出
但是当我从 java 文件中调用它时
LOGGER.error("APP: " + System.getenv("APP"));
LOGGER.error("PATH: " + System.getenv("PATH"));
LOGGER.error("JAVA_HOME: " + System.getenv("JAVA_HOME"));
我只得到 PATH 的输出,但没有得到其他 2 个环境变量。
输出
2017-12-18 07:22:10 ERROR JRWebService:127 - APP: null
2017-12-18 07:22:10 ERROR JRWebService:128 - PATH:/ usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
2017-12-18 07:22:10 ERROR JRWebService:129 - JAVA_HOME: null
请指正我做错了什么
好像APP和JAVA_HOME没有导出。对于 unix shells,设置(变量在您当前的 shell 中可见)和导出(变量对所有子进程可见)之间存在差异。如果您只键入 "X=Y",X 会被设置,但不会导出。 PATH 大部分已经导出到某个地方。
您可以在控制台中通过 运行ning "export | grep APP
" 来测试它。如果 APP 没有出现,变量将对 java 或您 运行 的任何其他程序不可见,即使 echo $APP
工作得很好。
如果是这种情况,只需将 "export APP" 添加到您的 .profile 或用于启动您的 java 应用程序的脚本(或进行测试,只需在之前在控制台上键入你开始 java).
您不应该获取您的 /etc/environment。这不是让变量进入你的过程的方法。 /etc/environment 文件不是脚本,因此获取它没有任何意义。它只是一个设置列表,有点像属性文件。
有关详细信息,请参阅 this。
登录时读取。因此,要使变量可见,您应该注销并重新登录。
我的/etc/environment
如下
APP="/opt/apps/"
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
JAVA_HOME="/usr/lib/jvm/java-8-oracle"
我已经在我的机器上获取了 source /etc/environment
。当我在终端
echo $APP
时,我能够得到输出
但是当我从 java 文件中调用它时
LOGGER.error("APP: " + System.getenv("APP"));
LOGGER.error("PATH: " + System.getenv("PATH"));
LOGGER.error("JAVA_HOME: " + System.getenv("JAVA_HOME"));
我只得到 PATH 的输出,但没有得到其他 2 个环境变量。
输出
2017-12-18 07:22:10 ERROR JRWebService:127 - APP: null
2017-12-18 07:22:10 ERROR JRWebService:128 - PATH:/ usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
2017-12-18 07:22:10 ERROR JRWebService:129 - JAVA_HOME: null
请指正我做错了什么
好像APP和JAVA_HOME没有导出。对于 unix shells,设置(变量在您当前的 shell 中可见)和导出(变量对所有子进程可见)之间存在差异。如果您只键入 "X=Y",X 会被设置,但不会导出。 PATH 大部分已经导出到某个地方。
您可以在控制台中通过 运行ning "export | grep APP
" 来测试它。如果 APP 没有出现,变量将对 java 或您 运行 的任何其他程序不可见,即使 echo $APP
工作得很好。
如果是这种情况,只需将 "export APP" 添加到您的 .profile 或用于启动您的 java 应用程序的脚本(或进行测试,只需在之前在控制台上键入你开始 java).
您不应该获取您的 /etc/environment。这不是让变量进入你的过程的方法。 /etc/environment 文件不是脚本,因此获取它没有任何意义。它只是一个设置列表,有点像属性文件。
有关详细信息,请参阅 this。
登录时读取。因此,要使变量可见,您应该注销并重新登录。