Java没有接受环境变量

时间:2013-10-09 11:43:12

标签: java linux

我正在尝试在linux中设置环境变量。我按照这里的说明进行操作:Make $JAVA_HOME easily changable in Ubuntu

尽管使用source /etc/environment并使用echo MY_VAR来验证linux是否检测到变量,但我的java应用程序不会接收它。变量继续返回null

public static void main(String[] args) throws IOException {
    System.out.print(System.getenv("MY_VAR"));

我正在通过sudo java -jar /path/to/my.jar

执行我的java应用程序

更新:我的错误,我没有包含正确的命令。我其实是在撒谎。

3 个答案:

答案 0 :(得分:3)

您需要导出变量

export MY_VAR=stackoverflow
java -jar /path/to/my.jar

然后你可以用

打印这个值
System.out.print(System.getenv("MY_VAR"));

编辑:简短示例脚本(必要时修改路径)

#!/bin/sh

MY_VAR="foobaz not exported"
echo "MY_VAR: ${MY_VAR}"
java -jar my.jar

export MY_VAR="foobaz exported"
echo "MY_VAR: ${MY_VAR}"
java -jar my.jar

答案 1 :(得分:1)

来自链接的答案..

  

在要更新变量的每个shell中执行“source / etc / environment”:

当你致电java -jar /path/to/my.jar时,我想你将开始一个新的shell,这意味着./etc/environment的内容将无法用于运行java代码的shell。

export MY_ENVIRONMENT="HELLO"
java -jar /path/to/my.jar

这看起来更好吗?

如果你在骂你的命令......

sudo -c export MY_ENVIRONMENT="HELLO";java -jar /path/to/my.jar

或沿着这些方向的东西

答案 2 :(得分:1)

问题是sudo使用自己的一组环境变量运行。您可以将变量添加到根环境(有时是挑剔的),或者告诉sudo明确地维护当前环境的变量。

以下是你如何做后者:

  1. 打开您的bash个人资料 vim ~/.bash_profile
  2. 将环境变量添加到文件export MY_VAR=80
  3. 打开sudoers配置文件sudo visudo
  4. 将以下行添加到文件中Defaults env_keep +="MY_VAR"
  5. 现在当你运行sudo java -jar /path/to/my.jar时,它应该可以正常工作,MY_VAR设置为80.

相关问题