2013-10-09 90 views
3

我想在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應用程序:我的錯,我沒有包括正確的命令。我其實是sudoing。

+1

是否能夠獲得其他變量,如JAVA_HOME? –

+0

嘗試在/ home中的.bashrc中設置JAVA_HOME – codeMan

+6

嘗試打印出System.getenv()。這將返回一張地圖。顯示看看你能看到哪些變量。然後檢查密鑰是否與您在設置變量時指定的密鑰相同 –

回答

2

您需要導出變量

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 
+0

這樣做,它仍然是空.. 。: - \ – Webnet

+0

@Webnet查看添加的簡短示例。如果它仍然不適合你,你應該顯示你正在做的步驟。 – SubOptimal

+0

看起來這是我發佈命令的一個問題 – Webnet

0

從鏈接答案..

在你想要的變量進行更新每個shell執行「源的/ etc /環境」:

當你調用java -jar /path/to/my.jar我想你會是開始一個新的外殼,這意味着./etc/environment的內容將不會提供給你的Java代碼在運行shell。

嘗試

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

這樣看起來更好嗎?

如果你是須藤-ing您的命令

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

或類似的規定

+0

它仍然'null'在這種情況下 – Webnet

0

問題是須藤用它自己的一套環境變量運行。您可以將變量添加到根環境(有時是非常挑剔的),或者告訴sudo顯式維護當前環境的變量。

這裏是你會怎麼做後者:

  1. 打開您的bash配置文件 vim ~/.bash_profile
  2. 環境變量添加到文件export MY_VAR=80
  3. 開拓sudoers的配置文件sudo visudo
  4. 添加以下行到文件完全一樣Defaults env_keep +="MY_VAR"

現在,當您運行sudo java -jar /path/to/my.jar它應該按照需要工作,MY_VAR設置爲80.