4

在我搜索的所有地方,它都说您可以通过使用获取环境变量System.getenv(str).

它不适合我。这就是我正在做的事情:操作系统:Mac OS x 10.7 Java 1.6.x

如果我export abc=/hello/在终端中执行 then echo $abc,它会给我变量。如果我关闭终端,重新打开它并执行echo $abc,它就消失了。为了克服这个问题,我编辑了我的.bash_profile文件并插入了export abc=/hello/. 关闭终端,执行echo $abc,它可以工作。所以我明白 env 变量现在是永久的。

现在,如果在我的 java 控制台应用程序中,我 print System.getenv("abc"),它会返回null. 我错过了什么?

4

3 回答 3

8

您需要将其放入export您的原因.bash_profile是在 shell 中设置环境变量仅保留该 shell 中的变量,并且 - 因为您使用过export- 该 shell 的级,或者换句话说,该 shell 启动的其他程序。

如果您从 Eclipse 运行 java 代码,并从设置了环境变量的 shell 启动 Eclipse,那么您的程序应该会看到添加的环境变量。要从 shell 启动 Eclipse,您需要使用 OS Xopen命令:

$ open /Applications/eclipse/Eclipse.app

或者,您可以在Eclipse 项目中设置环境变量,如果您没有从具有适当环境的 shell 启动 Eclipse,则需要这样做。在Run Configurations对话框中,查找名为Environment的选项卡。在这里,您将找到一个用于添加将传递给您的程序的环境变量的表格。

最好将环境变量添加到运行配置中,因为这样它们将始终可用于您的项目。您的代码实际上并不关心环境变量的来源,将它们添加到项目中更简单,并且在不同平台上的工作方式相同。

当然,当您在 Eclipse之外运行程序时,您需要确保在您运行的 shell 中存在相同的环境变量java

于 2012-09-13T20:18:03.403 回答
3

Eclipse 不使用系统的环境变量,除非直接从 shell 启动(通常通过单击其图标来启动它)。在这种情况下,您必须在程序运行配置的环境选项卡中显式设置所需的环境变量。

于 2012-09-13T20:18:54.993 回答
0

我也遇到了同样的问题,我是这样解决的。

  • 打开终端

  • cd 到 eclipse.app 所在的文件夹 例如cd /Users/Shared/eclipse/jee-2020-09

  • 类型open Eclipse.app/

  • Eclipse 现在将打开,并且还能够访问系统环境变量。

使用代码检查它:

System.getenv().forEach((k, v) -> {
    System.out.println("ENV : " + k + ":" + v);
});
于 2021-12-07T09:11:03.203 回答