如何在MacOS上安装额外的Java?我安装了jdk8,工作正常。但现在我需要一个jdk7安装用于开发目的。当尝试通过DMG文件安装旧版本时,我收到警告,已经安装了较新版本的Java并且安装程序退出。
/usr/libexec/java_home -verbose
Matching Java Virtual Machines (1):
1.8.0_20, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home
除了这个之外,如何安装jdk7?
感谢
Dakky
答案 0 :(得分:392)
在Mac上管理多个Java版本的最简单方法是使用Homebrew
。
在Homebrew
内,请使用:
homebrew-cask
安装java的版本jenv
来管理已安装的java版本如http://hanxue-it.blogspot.ch/2014/05/installing-java-8-managing-multiple.html所示,这些是要遵循的步骤。
使用以下内容将homebrew/cask-versions
点按添加到自制程序:
brew tap homebrew/cask-versions
然后你可以看看所有可用的版本:
brew search java
然后你可以安装你喜欢的版本:
brew cask install java7
brew cask install java6
并像往常一样将它们添加到由jenv管理。
jenv add <javaVersionPathHere>
我认为这是最干净的&amp;最简单的方法。
另一个需要注意的重要事项,如Mac OS X 10.6.7 Java Path Current JDK confusing中所述:
对于不同类型的JDK或安装,您将有不同的 路径
您可以使用
/usr/libexec/java_home -V
检查安装的版本的路径,请参阅How do I check if the Java JDK is installed on Mac?在Mac OS X Mavericks上,我发现如下:
1)内置JRE默认值:
/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
2)从Apple下载的JDK:
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/
3)从Oracle下载的JDK:
/Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home
答案 1 :(得分:242)
卸载jdk8,安装jdk7,然后重新安装jdk8。
我在它们之间切换的方法(在.profile中):
export JAVA_7_HOME=$(/usr/libexec/java_home -v1.7)
export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_9_HOME=$(/usr/libexec/java_home -v9)
alias java7='export JAVA_HOME=$JAVA_7_HOME'
alias java8='export JAVA_HOME=$JAVA_8_HOME'
alias java9='export JAVA_HOME=$JAVA_9_HOME'
#default java8
export JAVA_HOME=$JAVA_8_HOME
然后,您只需在终端中输入java7
或java8
即可切换版本。
(编辑:更新以添加Java 7的Dylans改进)
答案 2 :(得分:89)
本指南由各种来源拼凑而成(上面的回复以及其他帖子),并且完美无缺。
brew install jenv
if which jenv > /dev/null; then eval "$(jenv init -)"; fi
export PATH="$HOME/.jenv/shims:$PATH"
仅供参考:&#34;点击&#34;扩展brew可以安装的可用回购列表,超出brew的默认可用回购列表。
brew tap caskroom/versions
brew cask install java
brew cask install java6
#brew cask install java7
#brew cask install java8
?也许关闭并重新启动终端,以便它看到任何新的ENV变量已经安装。
此处安装了所有Java版本:/Library/Java/JavaVirtualMachines
让我们一起来看看。
ls -la /Library/Java/JavaVirtualMachines
我们需要添加&#34; / Contents / Home&#34;到版本文件夹。 警告:使用计算机上的实际路径......这些只是 示例 &#39>
jenv add /Library/Java/JavaVirtualMachines/1.6.0___EXAMPLE___/Contents/Home
jenv add /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk___EXAMPLE___/Contents/Home
jenv versions
XX匹配上述版本列表中的一个项目。
jenv global XX
java -version
还应指明当前版本与星号一起使用。
jenv versions
更改java版本
...查看可用的java版本列表
jenv versions
...然后,XX匹配上面列表中的项目
jenv global XX
答案 3 :(得分:34)
SDKMAN!是在Mac OS上使用多个版本的Java,Gradle,Groovy,Kotlin和其他JVM工具的绝佳工具。安装和使用文档显然位于主站点上。
(我没有联盟,只是一个快乐的用户)。
作为示例用法,如果我在终端窗口中键入以下内容,则会列出可用的Java SDK版本(为简洁起见而编辑):
$ sdk list java
Available Java Versions
+ 9ea170
> + 8u131
7u141-zulu
此处+
表示已安装该版本。 >
表示当前正在使用的版本。要安装版本:
$ sdk install java 7u141-zulu
要在此终端窗口中使用版本:
$ sdk use java 9ea170
答案 4 :(得分:7)
在此website上找到 所以我们首先安装jEnv
在终端中运行
brew install https://raw.github.com/gcuisinier/jenv/homebrew/jenv.rb
将jEnv添加到bash配置文件
if which jenv > /dev/null; then eval "$(jenv init -)"; fi
首次安装时,jEnv不会有任何与之关联的JDK。
例如,我刚刚安装了JDK 8,但jEnv不知道它。检查jEnv上的Java版本
目前它只在系统上找到Java版本(jre)。 *
显示当前选择的版本。与rvm和rbenv不同,jEnv无法为您安装JDK。您需要从Oracle网站手动安装JDK。
从Apple网站安装JDK 6。这将在/System/Library/Java/JavaVirtualMachines/
中安装Java。我们从Apple网站安装Java 6的原因是SUN没有为MAC提供JDK 6,因此Apple创建/修改了自己的部署版本。
同样安装JDK7和JDK8。
将JDK添加到jEnv。
JDK 6:
检查使用jenv安装的java版本
现在我们的系统上有3个版本的Java。要设置默认版本,请使用命令
jenv local <jenv version>
前 - 我希望Jdk 1.6启动IntelliJ
jenv local oracle64-1.6.0.65
检查java版本
就是这样。我们现在有多个版本的java,我们可以轻松地在它们之间切换。 jEnv还有一些其他功能,例如Gradle,Ant,Maven等的包装器,以及在全局或本地设置JVM选项的功能。查看文档以获取更多信息。
答案 5 :(得分:5)
我最近发现这个Java版本管理器名为Jabba,其用法与其他语言的版本管理器非常相似,如rvm(ruby),nvm(node),pyenv(python)等。此外,它还有#39 ; s跨平台,所以它绝对可以在Mac上使用。
安装完成后,它会在〜/ .jabba中创建一个dir来放置你安装的所有Java版本。它支持安装Oracle JDK(默认)/ Server JRE,Zulu OpenJDK(自0.3.0以来),IBM SDK,Java Technology Edition(自0.6.0开始)以及自定义URL。&#34;。
基本用法列在他们的Github上。快速摘要开始:
curl -sL https://github.com/shyiko/jabba/raw/master/install.sh | bash && . ~/.jabba/jabba.sh
# install Oracle JDK
jabba install 1.8 # "jabba use 1.8" will be called automatically
jabba install 1.7 # "jabba use 1.7" will be called automatically
# list all installed JDK's
jabba ls
# switch to a different version of JDK
jabba use 1.8
答案 6 :(得分:4)
我使用的是Mac OS X 10.9.5。当我需要一个版本来运行应用程序A并将另一个版本用于应用程序B时,这就是我在我的机器上管理多个JDK / JRE的方式。
我在网上获得一些帮助后创建了以下脚本。
"teams": []
我把上面的脚本放在.profile文件中。只需打开终端,输入vi .profile,使用上面的代码片段附加脚本并保存。输出#!bin/sh
function setjdk() {
if [ $# -ne 0 ]; then
removeFromPath '/Library/Java/JavaVirtualMachines/'
if [ -n "${JAVA_HOME+x}" ]; then
removeFromPath $JAVA_HOME
fi
export JAVA_HOME=/Library/Java/JavaVirtualMachines/$1/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
fi
}
function removeFromPath() {
export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
}
#setjdk jdk1.8.0_60.jdk
setjdk jdk1.7.0_15.jdk
后,这将运行您的配置文件脚本,而无需重新启动终端。现在输入source .profile
,它应该显示1.7作为您当前的版本。如果您打算将其更改为1.8,请对该行java -version
发表评论并取消注释该行setjdk jdk1.7.0_15.jdk
。保存脚本并使用source命令再次运行它。当我必须编译需要不同java版本的2个不同的Maven项目时,我使用这种机制来管理JDK / JRE的多个版本。
答案 7 :(得分:3)
如果在安装后无法正常工作,请执行此错误修复以将java可执行文件添加到路径
export PATH="$HOME/.jenv/shims:$PATH"
尽管eval "$(jenv init -)"
可以完成这项工作。原因是/ bin文件夹不再在它的主页中描述,但是shim文件夹用作/ bin。
which java
可能会打印/ Library /...最终,which java
会为您提供:
/Users/xxxx/.jenv/shims/java
答案 8 :(得分:3)
与@Vegard(轻量级)的精神相同:
将此jdk
bash函数和默认值放入.profile
jdk() {
version=$1
export JAVA_HOME=$(/usr/libexec/java_home -v"$version");
java -version
}
export JAVA_HOME=$(/usr/libexec/java_home -v11); # Your default version
然后,要切换您的jdk,您可以
jdk 9
jdk 11
jdk 13
答案 9 :(得分:1)
首先,您需要确保安装了多个 JAVA 版本。 打开一个新的终端窗口并输入:
/usr/libexec/java_home -V
您的输出应如下所示:
Matching Java Virtual Machines (2):
11.0.1, x86_64: "Java SE 11.0.1" /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home
1.8.0_201, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home
请注意,有两个 JDK 可用。如果您没有注意到需要切换到的 Java 版本,请从此处下载并安装相应的版本(JDK 8 表示为 1.8)。安装相应的 JDK 后,重复此步骤。
记下您要切换到的 JDK 版本。例如,“11.0”和“1.8”是上例中可用的JDK版本。
切换到想要的版本。例如,如果您希望切换到 JDK 8,请输入以下行:
导出 JAVA_HOME=/usr/libexec/java_home -v 1.8
对于 11.0,将“1.8”切换为“11.0” 4. 通过输入终端检查您的 JDK 版本:
java -version
如果您已正确执行所有步骤,则 JDK 版本应与您在最后一步中指定的版本相关联。 5.(可选)要使其成为默认的 JDK 版本,请在终端中输入以下内容:
open ~/.bash_profile
然后,将步骤 3 中的终端输入添加到此文件中:
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
保存并关闭文件。
答案 10 :(得分:1)
我最近回答了,我真的建议您使用SDKMAN而不是Homebrew。
使用SDKMAN,您可以在Mac中轻松安装不同版本的JAVA,并从一个版本切换到另一个版本。
您还可以将SDKMAN用于ANT,GRADLE,KOTLIN,MAVEN,SCALA等...
答案 11 :(得分:0)
这是一个很棒的教程 https://medium.com/@chamikakasun/how-to-manage-multiple-java-version-in-macos-e5421345f6d0 使用 brew 安装的 jEnv
或者你可以查看 homebrew-openjdk https://github.com/AdoptOpenJDK/homebrew-openjdk 使用 brew Tap 管理版本
答案 12 :(得分:0)
使用jenv在MAC中管理多个java版本
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
brew 安装 jenv
echo 'eval "$(jenv init -)"' >> ~/.bash_profile
brew tap homebrew/cask-versions
brew 搜索 java
brew install cask java6
jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home
jenv add /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
注意:-如果你得到类似“”ln: /Users//.jenv/versions/oracle64-1.8.0.231: No such file or directory之类的错误,然后运行以下:-
mkdir -p /Users//.jenv/versions/oracle64-1.8.0.231
jenv rehash
jenv 版本
jenv global oracle64-1.8.0.231
jenv 本地 oracle64-1.6.0.65
jenv exec bash
回声 $JAVA_HOME
答案 13 :(得分:0)
通过Homebrew安装Java的新命令:
brew cask install adoptopenjdk/openjdk/adoptopenjdk8
brew cask install adoptopenjdk/openjdk/adoptopenjdk11
有关最新命令,请参见homebrew-openjdk存储库。
安装Java
您可以通过Homebrew,Jabba,SDKMAN或手动安装Java。有关所有命令的详细信息,请参见this answer。
切换Java版本 *
您可以使用jenv Jabba,SDKMAN或手动切换Java版本。有关所有切换命令here的详细信息,请参见。
最佳解决方案
用于手动切换Java版本的功能
这里是Bash / ZSH函数,用于手动切换Java版本(通过OpenJDK):
jdk() {
version=$1
export JAVA_HOME=$(/usr/libexec/java_home -v"$version");
java -version
}
有很多用于切换Java版本的工具,因此强烈建议您不要手动执行。
答案 14 :(得分:0)
我按照下面的链接-https://medium.com/@euedofia/fix-default-java-version-on-maven-on-mac-os-x-156cf5930078中的步骤进行了操作,
cd /usr/local/Cellar/maven/3.5.4/bin/
nano mvn
--Update JAVA_HOME -> "${JAVA_HOME:-$(/usr/libexec/java_home)}"
mvn -version
答案 15 :(得分:0)
要安装OpenJDK的最新版本,请使用它。 OpenJDK 14的示例:
brew info adoptopenjdk
brew tap adoptopenjdk/openjdk
brew cask install adoptopenjdk14
答案 16 :(得分:0)
这是bash的更干版本(基于Vegard的答案)
将1.7和1.8替换为您感兴趣的任何版本 并且你会得到一个名为&#39; javaX&#39;的别名;在哪里&#39; X&#39;是java版本(下面的代码段中的7/8),可以让您轻松切换版本
for version in 1.7 1.8; do
v="${version: -1}"
h=JAVA_"$v"_HOME
export "$h"=$(/usr/libexec/java_home -v $version)
alias "java$v"="export JAVA_HOME=\$$h"
done