2014-03-07 35 views
-1

[消息更新爲包含腳本及其輸出,如您所述]。在bash腳本中包含java -version命令

我已經創建了一個在Ubuntu上安裝Oracle Java的Linux腳本。

腳本如下:

#!/bin/bash 
# This script installs Oracle Java 7u51 jdk on Ubuntu Linux 64 bit 

echo "Starting Oracle Java JDK Installation..." 
sudo mkdir /usr/local/java 
cd 
sudo cp -r jdk-7u51-linux-x64.tar.gz /usr/local/java 
rm jdk-7u51-linux-x64.tar.gz 
cd /usr/local/java 

echo "Unpacking java files in /usr/local/java" 
sudo tar xvzf jdk-7u51-linux-x64.tar.gz 
sudo rm jdk-7u51-linux-x64.tar.gz 
sleep 1s 

echo "Updating system Path file /etc/profile with Java variables" 
sudo sed -i '$ a\JAVA_HOME=/usr/local/java/jdk1.7.0_51' /etc/profile 
sudo sed -i '$ a\PATH=$PATH:$HOME/bin:$JAVA_HOME/bin' /etc/profile 
sudo sed -i '$ a\export JAVA_HOME' /etc/profile 
sudo sed -i '$ a\export PATH' /etc/profile 
sleep 1s 

echo "Updating alternatives" 
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/ 
jdk1.7.0_51/bin/java" 1 
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/ 
jdk1.7.0_51/bin/javac" 1 
sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/ 
jdk1.7.0_51/bin/javaws" 1 
sudo update-alternatives --set java /usr/local/java/jdk1.7.0_51/bin/java 
sudo update-alternatives --set javac /usr/local/java/jdk1.7.0_51/bin/javac 
sudo update-alternatives --set javaws /usr/local/java/jdk1.7.0_51/bin/javaws 
sleep 3s 

echo "Reload system wide Path /etc/profile" 
. /etc/profile 
sleep 3s 

echo "Testing if Java is installed correctly. System must reply with Java version." 
java –version 
sleep 1s 
javac -version 

腳本運行正常做它的事和Java安裝正確。 但是最後的java -version命令在終端上給出了這個輸出。

測試Java是否正確安裝。系統必須回覆Java版本。

錯誤:無法找到或加載主類-version

的javac 1.7.0_51

兩件事情難不倒我。 第一個是,javac -version命令在腳本中工作,但不在java -version命令中。

第二個是,如果我在腳本結束後立即去終端並輸入自己的java -version,它就可以工作。

+2

通過「它不工作」,你的意思是你得到一個異常或它不輸出任何東西?另外,如果你創建了一個只調用'java -version'的測試bash腳本,這是否工作?添加這兩個數據點可能會幫助您更好地獲得反饋。 – DreadPirateShawn

+1

PS:概念驗證是它*應該*從一個bash腳本內工作。我剛剛創建了一個由'#!/ bin/bash'和'java -version'組成的雙行腳本,它工作正常。 – DreadPirateShawn

+0

@ concept303是的,我相信DreadPirateShawn說的是做這件事的正確方法 - 試着看看這是否可以用最簡單的設置。如果沒有,請粘貼您在此使用的代碼,以及在腳本外部(即直接在您的終端中)正常運行的命令示例。 –

回答

3

安裝可能會添加到PATH中,您不會從當前shell中看到該PATH。與

sh -c java -version 
+0

你說了什麼,不行。我正在更新主要信息以包含腳本,因此如果您有任何其他想法,請在此處查看。謝謝 – knedas

+1

上面沒有證據表明你做了我所說的。 – EJP

+0

我知道,但我確實嘗試過。 – knedas

0

也許嘗試它,你可以改變調用順序,你可以前的更新替代操作調用重裝系統全路徑運行。