我的 mac 上安装了 java 7u75 但在命令行 java -version 还是 1.6.0

2015-04-02 08:00:02 +08:00
 binarymann
请问要如何切换版本呢

java -version
java version "1.6.0_65"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)
9232 次点击
所在节点    Java
20 条回复
binarymann
2015-04-02 08:04:46 +08:00
我 `export JAVA_HOME='/usr/libexec/java_home -v 1.7'` 后重启terminal java -version 后还是java version "1.6.0_65"
Septembers
2015-04-02 08:08:21 +08:00
which java
soyking
2015-04-02 08:15:02 +08:00
不是得export JAVA_HOME='你java7的地址'?
caixiexin
2015-04-02 08:16:19 +08:00
3l说的应该没错,你环境变量指向的还是机器自带的旧版本吧。
znoodl
2015-04-02 08:16:52 +08:00
你设置javahome只是JAVA运行中的环境变量,term中运行的需要加入path才有效吧
livelazily
2015-04-02 08:27:08 +08:00
@binarymann 你这 export 仅仅是在 terminal 运行一次还是写到 profile 里? 直接在 terminal 里运行是当前 terminal 内生效, 重启 terminal 后就会恢复了... 不熟悉的话建议用 jenv 管理: http://www.jenv.be/
binarymann
2015-04-02 08:36:47 +08:00
@soyking
@caixiexin

对,我的1.7明明提示安装成功了,但Library/java/JavaVirtualMachines下面是空的...
caixiexin
2015-04-02 08:43:30 +08:00
@binarymann mac下我不大清楚,ubuntu下面,我都是下载tar.gz或者zip压缩包,解压后,把环境变量指向到解压后的bin文件夹,配一下JAVA_HOME,然后source或者重启一下就好了。
tan9le
2015-04-02 08:47:59 +08:00
google一下jEnv用法
fvladlpa
2015-04-02 08:48:48 +08:00
应该是$PATH的问题
xuhaoyangx
2015-04-02 08:53:54 +08:00
@binarymann /usr/libexec/java_home -V 查看机子上所有的java,和路径
binarymann
2015-04-02 09:07:16 +08:00
@xuhaoyangx 太奇怪了,居然没有1.7,但我通过jre-7u75-macosx-x64.dmg明明安装成功了的呀

/usr/libexec/java_home -V
Matching Java Virtual Machines (2):
1.6.0_65-b14-462, x86_64: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
1.6.0_65-b14-462, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
SoloCompany
2015-04-02 09:22:10 +08:00
@binarymann 你要装 JDK,jre 没有安装到系统 framework 下面的,你看 java control panel 就知道了,是装到这个位置 '/Library/Internet Plug-Ins/JavaAppletPlugin.plugin’ 并且没有多个版本的

顺便

/usr/libexec/java_home -V
Matching Java Virtual Machines (4):
1.8.0_25, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home
1.7.0_72, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_72.jdk/Contents/Home
1.6.0_65-b14-466.1, x86_64: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
1.6.0_65-b14-466.1, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home


/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java -version
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.31-b07, mixed mode)
laoyur
2015-04-02 09:47:23 +08:00
xFan
2015-04-02 09:54:01 +08:00
环境变量没指向正确的地址
wanliang1221
2015-04-02 09:59:39 +08:00
查看环境变量,虽然我不知道MAC上时如何配置的。
binarymann
2015-04-02 10:00:28 +08:00
@SoloCompany 这个绝对是正确方向,原来如此,我晚上回去试下
yuankui
2015-04-02 10:29:05 +08:00
`export JAVA_HOME='/usr/libexec/java_home -v 1.7'` 改成
export JAVA_HOME=`'/usr/libexec/java_home -v 1.7'`
yuankui
2015-04-02 10:29:22 +08:00
你点打错了,你不知道吗?
FinalAir
2015-04-02 12:46:44 +08:00
function setjdk() {
if [ $# -ne 0 ]; then
removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin'
if [ -n "${JAVA_HOME+x}" ]; then
removeFromPath $JAVA_HOME
fi
export JAVA_HOME=`/usr/libexec/java_home -v $@`
export PATH=$JAVA_HOME/bin:$PATH
fi
}

function removeFromPath() {
export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
}

setjdk 1.7

所有版本都可以任意转换

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/181015

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX