使用Eclipse从java读取环境变量

时间:2012-09-13 20:13:18

标签: java eclipse macos environment-variables

我搜索的每个地方都说你可以使用System.getenv(str).

获取环境变量

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

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

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

2 个答案:

答案 0 :(得分:7)

您需要将export放在.bash_profile中的原因是,在shell中设置环境变量只会保留该shell中的变量,并且 - 因为您使用了export - 到那个shell的 children ,换句话说,是那个shell发起的其他程序。

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

$ open /Applications/eclipse/Eclipse.app

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

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

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

答案 1 :(得分:3)

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