【发布时间】:2014-03-07 00:26:58
【问题描述】:
[按照您的要求更新消息以包含脚本及其输出]。
我创建了一个在 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 版本。
错误:无法找到或加载主类-版本
javac 1.7.0_51
有两件事让我感到困惑。 首先是 javac -version 命令在脚本中有效,而 java -version 命令无效。
第二个是如果我在脚本结束后立即进入终端并输入自己的java -version,它可以工作。
【问题讨论】:
-
“它不起作用”,你的意思是你得到一个异常还是它没有输出任何东西?此外,如果您创建一个仅调用
java -version的测试 bash 脚本,这行得通吗?添加这两个数据点可能会帮助您更好地获得反馈。 -
PS:概念证明是它应该在 bash 脚本中工作。我刚刚创建了一个由
#!/bin/bash和java -version组成的两行脚本,并且运行良好。 -
@concept303 是的,我相信 DreadPirateShawn 所说的是正确的方法 - 尝试看看这是否适用于最简单的设置。如果没有,请在此处粘贴您正在使用的代码,以及在脚本之外(即直接在您的终端中)正常运行的命令示例。
-
我认为粘贴您的脚本代码将有助于其他人找到原因。
-
@DreadPirateShawn:试过了,结果还是一样。不能从脚本工作,可以从终端工作,我手动输入命令。重启后这种情况仍然存在。