Java System.getEnv()

时间:2012-08-07 01:40:00

标签: java variables environment getenv

在mac OSX和Linux CentOS中,我使用.bashrc&amp ;;插入一个新的系统环境变量(即“MYAPP”)。 .bash_profile中。我甚至重新启动了我的笔记本电脑(mac)和我的服务器(linux)。

当我使用命令行“env”时,该环境变量显示正确的值。但不知何故,每当我尝试在mac或linux中的Java应用程序(桌面应用程序或Web应用程序或EJB或servlet中的任何其他Java应用程序)中获取它时,都不会检索该环境变量(“MYAPP”)。

我试图遍历Java可以检索的整个环境变量,结果发现它检索除“MYAPP”之外的所有环境变量。这很奇怪。

任何人都知道如何解决这个问题?

4 个答案:

答案 0 :(得分:1)

你有export MYAPP=...吗?导出变量使其可用于子进程,例如由shell运行的java。

答案 1 :(得分:1)

在Linux中,如果您只在bash会话中设置变量(或将其导出),它将可用于某种“子”会话,该会话仅对您刚刚执行的命令可用,而不是其他任何会话。

您可以使用dot operator in bash(也称为“源”命令)。从页面:

当使用`source'运行脚本时,它在现有shell中运行,脚本完成后,脚本创建或修改的任何变量都将保持可用。

所以你可以试试。导出VARIABLE = value,然后运行java程序。这类似于在Windows终端中设置变量,然后打开一个新终端并期望env var在那里。它不会。

这样,你告诉bash“这个命令应该在这个特定的会话中可用(会话的过程)”。另外你要告诉它“为运行这个导出命令后将结束的bash会话设置这个env var”因此,当你运行Java程序时它将不存在。

答案 2 :(得分:0)

定义并导出环境变量之后。从同一终端启动IDE。

答案 3 :(得分:0)

尝试写

"$System.env.STOREPWD"