2015-05-12 83 views
1

我跟着這個教程http://saskia-vola.com/nutch-2-2-elasticsearch-1-x-hbase/當我終於嘗試運行Nutch的sudo bin/nutch inject urls我得到這個錯誤Nutch的錯誤:JAVA_HOME未設置

Error: JAVA_HOME is not set. 

但是當我回聲JAVA_HOME返回

/usr/lib/jvm/java-7-openjdk-amd64 

,它也在/ etc /環境中

JAVA_HOME="/usr/lib/jvm/java-7-openjdk-amd64" 

並且我還添加了行到文件〜/ .bashrc

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 

但它仍然返回此錯誤。我該如何解決它?

回答

1

您正在以root用戶身份運行該命令,因此應用程序看到的環境變量對於root用戶而不是您的用戶可見。如果可能,只要檢查根目錄是否有JAVA_HOME環境變量設置或者以用戶身份運行該程序。

您可以嘗試sudo -E bin/nutch inject urls

由於sudo的手冊說, -E,--preserve-ENV 表示該用戶希望保留他們現有的環境變量的安全策略。如果用戶沒有權限保留環境,則安全策略可能會返回錯誤。

+0

作爲用戶我有權限被拒絕。所以我運行sudo -i切換到root用戶,並在根目錄下設置與JAVA_HOME相同的文件.bashrc,然後運行bin/nutch注入並運行,但是當我使用sudo bin/nutch注入時,我得到了與JAVA_HOME相同的錯誤。 – 32cupo

+1

@ 32cupo我編輯了我的答案 –

+0

它的工作原理,謝謝你:-) – 32cupo

0

確保完整的JDK不僅存在於JVM中。您還可以通過在主目錄中的.bashrc文件中導出JAVA_HOME = YOUR_PREFERED_JDK_PATH來覆蓋此內容。

+0

我跑這個出口JAVA_HOME =/usr/lib目錄/ JVM/java-7-openjdk-amd64和source〜/ .bashrc作爲根,它的行爲就像我在第一個回答中所述的 – 32cupo

-1

也許你沒有在/etc/environment中設置java路徑。嘗試給定的命令。

sudo vi /etc/environment 

,然後設置Java的路徑

JAVA_PATH=/give your java path here/ 

您可以通過使用$JAVA_HOME檢查java的路徑,然後使用

sudo -E bin/nutch inject urls