JAVA中的环境变量(tomcat)

问题描述 投票:0回答:2

我有我的/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个env变量。

OUTPUT

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

请纠正我,我做错了什么

java linux tomcat tomcat8 environment
2个回答
3
投票

听起来好像APP和JAVA_HOME没有导出。对于unix shell,set(变量在当前shell中可见)和export(变量对所有子进程可见)之间存在差异。如果只键入“X = Y”,则X已设置,但未导出。 PATH主要出口到某个地方。

您可以通过在控制台中运行“export | grep APP”来测试它。如果APP没有显示,则变量将不会对java或您运行的任何其他程序可见,即使echo $APP工作得很好。

如果是这种情况,只需将“export APP”添加到.profile或用于启动java应用程序的脚本(或者在开始java之前测试,只需在控制台上键入它)。


0
投票

您不应该来源/ etc / environment。这不是将变量引入流程的方法。 / etc / environment文件不是脚本,因此获取它是没有意义的。它只是一个设置列表,有点像属性文件。

有关详细信息,请参阅this

登录时会读取它。因此,要使变量可见,您应该注销并重新登录。

© www.soinside.com 2019 - 2024. All rights reserved.