ubuntu終端sudo java提示“command not found”解決辦法

來源:互聯網
上載者:User

  我在ubuntu 12.04裡想啟動一個java程式,sudo java -jar xxx.jar,但是結果提示sudo:java:command not found。  

  Ubuntu下用sudo運行java程式時,要注意此時使用者目錄為/root,而不是/home/yourname之類的。如果沒注意到這一點,就可能會遇到這樣一種情況:某個java相關的組件把某些配置預設放在/home/yourname,而你用sudo啟動的java程式卻又去/root下找這個檔案,結果沒找到; 而如果相關的模組又不報錯或者不夠高調的報錯,你就很難發現錯在哪裡。

   這種情況一般是因為你的root使用者下沒有配置java的路徑,sudo的環境變數和普通使用者的環境變數不一樣。sudo的環境變數時整合的root使用者的,sudo對應的PATH變數一般是:/sbin:/usr/sbin:/bin:/usr/bin。

  可以使用sudo `which java` -jar XX.jar試試。

  另外,換一種jdk的配置方法也是可以解決這個問題的。 之前修改的/etc/profile的配置,後來改的是/etc/environment(注意在/etc/environment中不要export PATH=...,不然會出現卡在登陸介面的情況)。配置完/etc/environment後source /etc/environment,sudo java就可以執行了。

 

附註:  

  (1)/etc/environment是設定整個系統的環境,而/etc/profile是設定所有使用者的環境,前者與登陸使用者無關,後者與登陸使用者有關。系統應用程式的執行與使用者環境可以是無關的,但與系統內容時相關的,所以當你登陸時,你看到的提示資訊,如日期、時間資訊的顯示格式與系統內容的LANG是相關的,預設LANG=en_US,如果系統內容LANG-zh_CN,則提示資訊是中文的,否則是英文的。

  (2)登陸系統時shell讀取的順序應該是/etc/profile -> /etc/environment -> $HOME/.profile -> $HOME/.env。

  (3)如果同一個變數在使用者環境(/etc/profile)和系統內容(/etc/environment)有不同的值那應該以使用者環境為準。

 

  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.