代码之家  ›  专栏  ›  技术社区  ›  Jay Chakra

JAVA中的环境变量(tomcat)

  •  0
  • Jay Chakra  · 技术社区  · 7 年前

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

    输出

    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

    请纠正我做错了什么

    2 回复  |  直到 7 年前
        1
  •  3
  •   Yaro    7 年前

    听起来APP和JAVA\u HOME没有导出。对于unix shell,set(变量在当前shell中可见)和export(变量对所有子进程可见)之间存在差异。如果只键入“X=Y”,则会设置X,但不会导出。路径大部分已经导出到某个地方。

    您可以通过运行“ export | grep APP “在您的控制台中。如果应用程序未显示,java或您运行的任何其他程序将看不到该变量,即使 echo $APP 很好用。

    如果是这种情况,只需将“导出应用程序”添加到。概要文件,或者启动java应用程序的脚本(或者要进行测试,只需在启动java之前在控制台上键入即可)。

        2
  •  0
  •   DodgyCodeException    7 年前

    您不应该为您的/etc/environment提供来源。这不是将变量引入流程的方法。etc/environment文件不是脚本,因此没有必要对其进行源代码设置。它只是一个设置列表,有点像属性文件。

    看见 this 了解更多详细信息。

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