清除不卸载 java 6?

purge doesn't uninstall java 6?

我正在使用 Vagrant 来模拟分布式系统项目的网络。我正在使用此文件 provision.sh 来配置集群中的每台机器:

sudo apt-get update
sudo apt-get install -y openjdk-7-jdk
sudo apt-get purge -y openjdk-6-jre
sudo apt-get purge -y openjdk-6-jre-lib 
sudo apt-get install -y maven
echo "export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-i386" >> /home/vagrant/.profile
echo "export PATH=$JAVA_HOME/bin:$PATH" >> /home/vagrant/.profile
mvn clean -f /vagrant/RaftFS/pom.xml
mvn package -f /vagrant/RaftFS/pom.xml
sudo mv /vagrant/RaftFS/target/RaftFS-1.0-SNAPSHOT-jar-with-dependencies.jar /vagrant/
sudo cp /vagrant/RaftFS/servers.yaml /vagrant/

但是当我访问 VM 并且我 运行 java -version 它说仍然安装了版本 6!这怎么可能?正如@ydaetskcoR 所建议的,如果我执行 env | grep JAVA_HOME 它 returns JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-i386 ...所以我不明白为什么它说 java 版本是 6

为了完整起见,这是 Vagrant 文件:

# -*- mode: ruby -*-
# # vi: set ft=ruby :

# Specify minimum Vagrant version and Vagrant API version
Vagrant.require_version ">= 1.6.0"
VAGRANTFILE_API_VERSION = "2"

# Require YAML module
require 'yaml'

# Read YAML file with box details
servers = YAML.load_file('RaftFS/servers.yaml')

# Create boxes
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  # Iterate through entries in YAML file
  servers.each do |key,value|
    config.vm.define key do |srv|
        srv.vm.box = value['box']
            srv.vm.network "private_network", ip: value['ip']
        srv.vm.hostname=key
        srv.vm.synced_folder ".", "/vagrant" , disabled:true
        srv.vm.synced_folder "ServersFS/"+key+"/", "/vagrant/ServersFS" , create: true
        srv.vm.synced_folder "./RaftFS", "/vagrant/RaftFS"
        srv.vm.provision :shell, path: "provision.sh"
        srv.vm.provider :virtualbox do |vb|
            vb.name = key
            vb.memory = value['ram']
            end
    end
  end
end

这是 servers.yaml 文件:

hal9000:
     box: hashicorp/precise32
     ram: 512
     ip: 172.17.8.101
     ftpPort: 8080
skynet:
     box: hashicorp/precise32
     ram: 512
     ip: 172.17.8.102
     ftpPort: 8081
jarvis:
     box: hashicorp/precise32
     ram: 512
     ip: 172.17.8.103
     ftpPort: 8083   

安装新的 Java 版本后,您必须通知您的系统您的 Oracle Java JDK/JRE 所在的位置,并且必须使用默认版本。这将告诉系统新的 Oracle Java 版本可供使用。

为此你必须使用 "update-alternatives",像这样:

sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk1.8.0_20/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/jdk1.8.0_20/bin/javac" 1
sudo update-alternatives --set java /usr/local/java/jdk1.8.0_20/bin/java
sudo update-alternatives --set javac /usr/local/java/jdk1.8.0_20/bin/javac

更改打开jdk-7-jdk 文件的路径

我自己找到了我的问题的答案:我只需要用这两个命令更新系统的备选方案:

sudo apt-get install icedtea-7-plugin
sudo update-java-alternatives -s java-1.7.0-openjdk-i386

第一个是必需的,否则会抛出此错误:

update-java-alternatives: plugin alternative does not exist: /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/IcedTeaPlugin.so

现在如果我 运行 java -version 返回正确的版本 (7)。