当试图用Java8运行Tomcat7时,“无法统计/ usr / lib / jvm / java-7-oracle / bin / java”

我试图从Java7升级我的服务器到Java8,以便他们将在Java8下运行我的webapps。 在我的机器之一,我得到以下错误,我不知道什么仍然指的是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) 

这台服务器是Ubuntu 14.10(Utopic)。 我卸载了所有的java-7和java-6软件包。 我现在已经安装了以下java包:

  • 的openjdk -8- JDK
  • 的openjdk -8- JRE
  • 的openjdk -8-源
  • 甲骨文java8的安装程序

我有一行/usr/share/tomcat7/bin/setenv.sh文件:

 JAVA_HOME=`readlink -f /usr/bin/javac | sed 's|/bin/javac||g'` 

Java的select似乎指向正确的事情:

 $ 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'. 

Java 8正常工作:

 $ 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