使用Eclipse从java读取环境变量

使用Eclipse从java读取环境变量,java,eclipse,macos,environment-variables,Java,Eclipse,Macos,Environment Variables,在我搜索的任何地方,它都说可以使用System.getenv(str)获取环境变量。 这对我不起作用。以下是我正在做的: 操作系统:Mac OS x 10.7 Java1.6.x 如果我在终端中导出abc=/hello/,然后echo$abc,它会给我变量。如果我关闭终端,重新打开它,然后执行echo$abc,它就不见了。为了克服这个问题,我编辑了我的.bash\u配置文件并插入了export abc=/hello/。关闭终端,执行echo$abc。所以我知道env变量现在是永久的 现在,如果在

在我搜索的任何地方,它都说可以使用
System.getenv(str)获取环境变量。

这对我不起作用。以下是我正在做的: 操作系统:Mac OS x 10.7 Java1.6.x

如果我在终端中导出abc=/hello/,然后
echo$abc
,它会给我变量。如果我关闭终端,重新打开它,然后执行echo$abc,它就不见了。为了克服这个问题,我编辑了我的
.bash\u配置文件
并插入了
export abc=/hello/
。关闭终端,执行echo$abc
。所以我知道env变量现在是永久的


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

您需要将
导出
放在
.bash\u配置文件
中的原因是,在shell中设置环境变量只会保留该shell中的变量,并且-由于您使用了
导出
-到该shell的子级,或者换句话说,由该shell启动的其他程序

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

$ open /Applications/eclipse/Eclipse.app
或者,您可以在Eclipse项目中设置环境变量,如果您不是从具有适当环境的shell启动Eclipse,则需要这样做。在“运行配置”对话框中,查找名为“环境”的选项卡。在这里,您将找到一个表,用于添加将传递到程序的环境变量

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


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

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

您如何启动java应用程序?您正在运行的会话在
中没有新的导出。bash\u profile
,从当前会话重新执行
.bash\u profile
,然后所有应用程序都应该能够看到它。如果我从终端运行我的应用程序,它将获得我在bash\u profile文件中设置的env变量?那么不需要运行配置吗?@Salmanmahmood是的,如果从终端运行Eclipse,则需要使用OS X
open
命令,但随后您应该会看到相同的环境变量。我会补充答案的谢谢!!最后一个问题。如果我在终端中设置env变量,在终端中使用
javac
编译我的*.java文件,然后在终端中使用
java
命令运行应用程序,它会选择env变量吗?(无需写入.bash_profile)当您运行
java
时,shell中存在的任何环境变量都将可用于您的程序。因此,如果在运行程序之前在shell中设置它,或者在
.bash\u概要文件中设置它,那么请在Eclipse外部运行程序,然后,您将看到相同的环境变量即使不是从shell启动,在eclipse中获取环境变量应该做什么?相反:eclipse将获取系统环境变量,包括在shell中设置的任何环境变量,通过命令从中启动Eclipseline@pb2q在回答中说得很清楚。嗯,答案仍然是误导性的。Eclipse像任何其他程序一样拾取env变量,这意味着为Windows中的系统或用户设置的任何系统环境变量,或UN*X系统中的shell环境变量。