【发布时间】:2015-03-26 17:33:07
【问题描述】:
我正在使用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/
但是当我访问虚拟机并运行java -version 时,它说仍然安装了版本 6!这怎么可能?正如@ydaetskcoR 所建议的,如果我执行env | grep JAVA_HOME,它会返回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
【问题讨论】:
-
env | grep JAVA_HOME显示什么? -
哇,没想到:还没设置!无论如何,我尝试手动执行
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386,但如果我执行java -version,它仍然返回java version "1.6.0_34" -
你在这些盒子上使用什么操作系统和外壳?
-
我更新了包括 .yaml 文件在内的问题,以回答您的问题(答案是精确的 32)...无论如何我也添加了重要更新部分
-
好的,我在配置过程中成功设置了 JAVA_HOME,但是版本 6 仍然返回
java -version...您认为我以错误的方式导出JAVA_HOME吗?跨度>
标签: java vagrant virtual-machine