サーバーをJava7からJava8にアップグレードして、サーバーがJava8でWebアプリケーションを実行できるようにしようとしています。私のマシンの1つで次のエラーが発生し、Java-7をまだ参照しているものがわからない
$ Sudo service Tomcat7 start
* Starting Tomcat servlet engine Tomcat7
start-stop-daemon: unable to stat /usr/lib/jvm/Java-7-Oracle/bin/Java (No such file or directory)
このサーバーはUbuntu14.10(Utopic)です。すべてのJava-7およびJava-6パッケージをアンインストールしました。これで、次のJavaパッケージがインストールされました:
/ usr/share/Tomcat7/bin/setenv.shファイルがあります。次の行があります。
Java_HOME=`readlink -f /usr/bin/javac | sed 's|/bin/javac||g'`
Javaの選択肢は正しいことを示しているようです:
$ update-alternatives --display Java
java - manual mode
link currently points to /usr/lib/jvm/Java-8-Oracle/jre/bin/Java
/usr/lib/jvm/Java-8-openjdk-AMD64/jre/bin/Java - priority 1069
slave Java.1.gz: /usr/lib/jvm/Java-8-openjdk-AMD64/jre/man/man1/Java.1.gz
/usr/lib/jvm/Java-8-Oracle/jre/bin/Java - priority 1080
slave Java.1.gz: /usr/lib/jvm/Java-8-Oracle/man/man1/Java.1.gz
Current 'best' version is '/usr/lib/jvm/Java-8-Oracle/jre/bin/Java'.
Java8は正しく機能します。
$ Java -version
Java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
なぜまだJava-7を探しているのか理解できません。次のgrepは、手がかりを明らかにしていません。
$ Sudo grep -r Java-7 /etc/Tomcat7 /etc/init.d/Tomcat7 /var/lib/Tomcat7/ /usr/share/Tomcat7
Tomcat7がまだJava-7を探す原因は何ですか?
参照は/etc/default/Tomcat7
にありました:
Java_HOME=/usr/lib/jvm/Java-7-Oracle
これをJava-8に更新すると、すべてが正常に開始されます。アップグレードを行うためのスクリプト全体を次に示します。
#!/bin/sh
set -e
Sudo add-apt-repository -y ppa:webupd8team/Java
Sudo apt-get update
Sudo apt-get --force-yes -y install \
openjdk-8-jdk \
openjdk-8-jre \
openjdk-8-source \
Oracle-Java8-installer
Sudo apt-get --force-yes -y remove \
openjdk-6-jdk \
openjdk-6-jre \
openjdk-6-jre-headless \
openjdk-6-source \
openjdk-7-jdk \
openjdk-7-jre \
openjdk-7-jre-headless \
openjdk-7-source \
Oracle-Java6-installer \
Oracle-Java7-installer
echo "Setting Java provider to Java-8-Oracle"
Sudo update-Java-alternatives --set Java-8-Oracle || true
currentjava=`update-alternatives --display Java | grep 'points to'`
if [ "$currentjava" == "${currentjava/Java-8-Oracle/}" ]
then
echo "Java not set properly"
exit 1
fi
Sudo sed -i -r "s#^Java_HOME=.*#Java_HOME=\`readlink -f /usr/bin/javac | sed 's|/bin/javac||g'\`#" /etc/default/Tomcat7
Sudo service Tomcat7 stop
sleep 4
Sudo killall -u Tomcat7 || true
sleep 3
Sudo service Tomcat7 start