【问题标题】:System.getenv("TEST_HOME") is returning nullSystem.getenv("TEST_HOME") 返回 null
【发布时间】:2016-07-16 14:58:11
【问题描述】:

我正在使用 ubuntu 14.0.4 机器。

我在我的.bashrc 文件中导出了一个变量 TEST_HOME 使用

export TEST_HOME=/home/dev/code/test

当我从终端尝试echo $TEST_HOME 时,它返回了/home/dev/code/test

到目前为止,一切都很好。

当我尝试使用 Java 代码时:

String value = System.getenv("TEST_HOME");

value 为空。

我错过了什么吗?

【问题讨论】:

  • 要使该变量位于 Java 环境中,您必须从设置了该变量的 shell 启动 Java 进程。你有吗?
  • @folkol 我没有在特定的外壳/终端中导出这个变量。我在.bashrc 中添加了它的条目
  • 关闭并重新打开终端以刷新 .bashrc 定义的更改
  • 这个link 可能会对你有所帮助。
  • @vikingsteve 我无法从 Java 代码中获取此值。我可以从终端获得它的价值。

标签: java environment-variables system-variable


【解决方案1】:

.bashrc 中提及变量仅适用于从 shell 启动的程序。对于系统范围的环境变量,请在 /etc/environment 中提及。

参考Ubuntu Environment variables

【讨论】:

  • 目前我的/etc/environment 中只有路径变量。我需要在/etc/environment 中输入export TEST_HOME=/home/dev/code/test 吗?
  • 我在/etc/environment 中添加了export TEST_HOME=/home/dev/code/test。现在echo $TEST_HOME 什么都不返回(我重新启动终端),Java 代码中的相同 null(我重新启动 eclipse)我需要为此重新启动机器吗?
  • 这个Reload env 将有助于避免重启机器。
【解决方案2】:

.bashrc 只会为 bash shell 设置环境变量。要在系统范围内设置它,请将其设置在 /etc/environment 文件中。

由于您使用的是 eclipse,并且它不在 bash shell 中运行,因此它无法获取您正在设置的变量。如果您在终端中使用 java 命令行运行程序,那么它应该会得到它。

/etc/environment 中设置变量将使其可用于eclipse。更新 /etc/environment 后,您需要重新启动计算机。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-29
    • 2012-11-03
    • 2015-02-03
    • 1970-01-01
    相关资源
    最近更新 更多