How to install Java 8 on Mac
我想用最新的JavaFX来做一些编程,它需要Java 8。我使用的是Intellij13CE和MacOSX9Mavericks。我运行了Oracle的Java 8安装程序,文件看起来像是在
1 | /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk |
但以前的版本在
1 |
不知道为什么最新的安装程序把它放在
具有讽刺意味的是,系统首选项下的"Java"控制面板只显示Java 1.8!
为什么甲骨文的安装人员不把它放在真正的地方?我该如何解决这个问题呢?
不要依赖Oracle在你的Mac上正确安装Java。
使用自制饮料。这将安装最新的JDK:
1 | brew cask install java |
如果希望在Mac上管理多个版本的Java,请考虑使用JENV。
更新:现在Java 8不再是最新版本,如果您希望Java 8以这样的方式安装:
1 2 | brew tap caskroom/versions brew cask install java8 |
获取Java的所有旧版本的列表:EDCOX1×0,然后使用EDCOX1×1。
我们使用BREW木桶,因为否则我们将使用Oracle GUI安装程序,它可能不会在您的Mac上正确安装Java。(使用BREW桶安装应用程序来安装GUI应用程序;使用BREW安装应用程序)Java不是GUI应用程序;它不需要"木桶",但至少Oracle是一致的。
El Capitan、Sierra和High Sierra
首先从终端安装和更新BREW:
1 2 3 4 5 | /usr/bin/ruby -e"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" brew tap caskroom/versions brew update |
Java 8:
1 | brew cask install java8 |
最新Java:
1 | brew cask install java |
我刚在我的MBP上做了这个,必须使用
1 2 | $ brew tap caskroom/versions $ brew cask install java8 |
以便安装Java8。
我开始真正喜欢在本地计算机上运行应用程序的一个选项是使用Docker。您只需在官方JDK容器中运行应用程序,这意味着您不必担心在本地计算机上设置所有内容(或者担心为不同的应用程序运行多个不同版本的JDK等)。
虽然这可能无法帮助您解决当前的安装问题,但它是一种解决方案,意味着您可以回避与试图在您的DEV机器上正确运行Java相关的问题的雷区。
好处是:
一个非常简单的例子:
创建一个
1 2 3 | FROM java:8 COPY . /usr/src/myapp WORKDIR /usr/src/myapp |
- 在这里,我们指定了SDK运行的Java容器(EDCOX1,1,8)——使用Java 7,您可以只指定:EDCOX1(2)
- 我们正在将本地目录映射到容器中的目录:
/usr/src/myapp 。
创建
1 2 3 4 5 6 7 | version:"2" services: java: build: . volumes: - .:/usr/src/myapp |
现在,假设我们有这个Java文件:
HeloReld.JAVA
1 2 3 4 5 |
因此,我们有以下文件结构:
1 2 3 4 | . |_ Dockerfile |_ docker-compose.yml |_ HelloWorld.java |
你可以做各种Java的事情,比如:
编译:
1 | docker-compose run --rm java javac HelloWorld.java |
- 您应该注意,helloworld.class出现在您的当前目录中(这是因为我们已经将当前目录映射到了容器中存在代码的位置
运行:
1 | docker-compose run --rm java java HelloWorld |
- 注意:第一次运行此程序时,它将获取图像等。这将花费一段时间-仅在第一次运行时发生
docker-compose run —从容器内运行命令-rm 通知docker在命令运行完成后移除容器。java 是运行此命令的服务/容器(来自docker compose文件)的名称。- 行的其余部分是在容器中运行的命令。
这是一个处理不同应用程序的不同版本Java的非常酷的方法,而不必把你的本地设置弄得一团糟。
下面是一个稍微复杂一点的例子,其中有Maven和一个简单的Spring应用程序
免责声明:
- 我还没有在像Intellij这样的IDE中尝试过这一点,所以不完全确定这方面的工作方式。虽然看起来码头工人的支持即将到来
- 下面是一个非常复杂的例子,运行带有SpringBoot、Zuul和Docker的微服务。
我也有同样的问题要解决,因为我需要安装JDK8来运行android sdk manager(因为它似乎不适合JDK9)。但是,我告诉你我如何在Mac(Sierra)上解决所有问题。
首先,你需要用木桶和珍妮弗来酿造。
您可以在这个github-gist brew-java-and-jenv.md上找到其他有用的信息,在这个博客上,在Mac和jenv网站上安装多个jdk。
1 | brew cask install caskroom/versions/java8 |
在Mac High Sierra上运行这些命令
1 2 3 | brew update brew tap caskroom/versions brew cask install java8 |
用命令检查
1 | java -version |
我有使用Java 7和8的应用程序,并且必须一直来回进行。
我用约翰写的剧本:
http://www.jayway.com/2014/01/15/how-to-switch-jdk-version-on-mac-os-x-maverick/
现在您可以在启动时设置它,或者在启动后调用脚本。安装JDK for Mac。
爪哇7
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
爪哇8
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
如果您的机器上有几个Java版本,并且您想在运行时动态地选择它,也就是说,在我的例子中,我有两个版本:
1 2 3 | ls -la /Library/Java/JavaVirtualMachines drwxr-xr-x 3 root wheel 96B Nov 16 2014 jdk1.7.0_71.jdk/ drwxr-xr-x 3 root wheel 96B Mar 1 2015 jdk1.8.0_31.jdk/ |
您可以通过修改
1 2 | export JAVA_HOME=YOUR_JAVA_PATH/Contents/Home export PATH=$JAVA_HOME/bin:$PATH |
在我的例子中,如果我想使用它,应该是如下所示:
Java 7:
1 2 | export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home export PATH=$JAVA_HOME/bin:$PATH |
Java 8:
1 2 | export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home export PATH=$JAVA_HOME/bin:$PATH |
保存文件后,请运行
Java 7:
1 2 3 |
Java 8:
1 2 3 |
如果Java文件夹位于不同的位置,则该过程类似。
假设:Mac机器和您已经安装了自制。
安装木桶:
1 2 | $ brew tap caskroom/cask $ brew tap caskroom/versions |
安装最新的Java:
1 | $ brew cask install java |
安装Java 8:
1 | $ brew cask install java8 |
如果要安装/管理多个版本,则可以使用"jenv":
安装和配置Jenv:
1 2 3 4 | $ brew install jenv $ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile $ echo 'eval"$(jenv init -)"' >> ~/.bash_profile $ source ~/.bash_profile |
将已安装的Java添加到JENV:
1 2 | $ jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home $ jenv add /Library/Java/JavaVirtualMachines/jdk1.11.0_2.jdk/Contents/Home |
查看所有已安装的Java:
1 | $ jenv versions |
上面的命令将给出已安装Java的列表:
1 2 3 4 | * system (set by /Users/lyncean/.jenv/version) 1.8 1.8.0.202-ea oracle64-1.8.0.202-ea |
配置要使用的Java版本:
1 | $ jenv global oracle64-1.6.0.39 |
要设置java_主页:
1 | $ jenv enable-plugin export |
Java8在自制时不再可用,
相反,使用:
1 2 | brew tap AdoptOpenJDK/openjdk brew cask install adoptopenjdk8 |
有关技术详细信息,请参阅此提交。
使用安装程序,卢克
您有多个来源来获得一个易于使用的安装程序来将Java放到您的Mac上。其他一些建议BREW或其他方法的答案对我来说似乎有点极端。只需从受信任的源下载一个Mac安装程序并运行它。好的。
这里有一个流程图,用于查找Java 11的源代码,其中一些还提供Java 8。好的。
好的。
Why doesn't Oracle's installer put it where it really goes? And how can I work around this problem?
Ok.
不是问题。好的。
要安装JVM,请使用下面讨论的安装程序。好的。
要卸载,只需使用finder从该文件夹中删除一个JVM。系统将提示您输入系统管理员密码以完成删除。好的。Java 9和10和11
早在2010,苹果就加入了Oracle、IBM、Red Hat、Azul和其他Java供应商的OpenJDK项目。每个成员都向统一的OpenJDK代码库提供源代码、测试和反馈。好的。
苹果公司为其JVM贡献了大部分特定于Mac的代码。现在苹果不再发布自己的Mac专用的JVM。现在,您可以选择JVM供应商,其构建来自OpenJDK代码库。好的。
您可以在以下网址找到源代码:http://openjdk.java.net好的。新发行节奏
请注意,在2017,Oracle、JCP和OpenJDK采用了一种新的快速发布版本,用于以可预测的方式递送定期调度的Java版本。好的。
阅读2018-07 AZUL系统博客帖子的许多细节,消除Simon Ritter的Java更新混乱。好的。
也读Java仍然是免费的。好的。小贩
有关过去和现在的JVM实现的详细列表,请参见维基百科的本页。好的。
以下是我所知道的三个当前活动的来源。好的。虚拟机
Oracle为包括MacOS在内的多个平台提供JDK和JRE安装程序。好的。
多年来,自从获得Sun以来,Oracle已经将两个JVM引擎的最佳部分,热点和JROG结合在一起,并将它们合并到OpenJDK项目中,作为他们自己的Java Java实现的基础。好的。
他们的新的商业计划,如2018,是提供一个甲骨文品牌的Java实现的费用,在生产,并没有成本用于开发/测试/演示。对早期版本的支持需要一个付费支持计划。他们已经宣布他们的品牌发布打算与OpenJDK发布具有同等的功能。他们甚至向OpenJDK项目捐赠了诸如飞行记录器之类的商业附加组件。好的。祖鲁与阿祖尔
Azul Systems提供各种JVM产品。好的。
- 他们的
Zulu 线直接基于openjdk,并且免费提供可选的付费支持计划。 - 他们的
Zing 系列提供了商业化的JVM产品,这些产品通过其他技术实现(如专门的垃圾收集器)进行了增强。
他们的两个系列都为MacOS提供安装程序。好的。
我目前使用的MulOS高级Sierra上的Zulu使用MeloSJ 2018.2和VAIDIN 8。我从这个页面下载的。顺便说一下,我在苹果系统首选项应用程序中没有找到任何与Java相关的项目。好的。采用openjdk.net
AdoptOpenJDK是一项由社区领导的构建OpenJDK源代码二进制文件的工作。他们打算提供社区成员捐赠的更新。好的。
- 您可以选择Hotspot或OpenJ9引擎。
- 可用于MacOS、Linux和Windows的版本。
由Eclipse创建的OpenJ9
OpenJ9项目是JVM引擎的另一个实现,它是热点的替代方案。好的。
现在在Eclipse基金会赞助,IBM在2017捐赠了技术和支持。好的。
对于预构建的二进制文件,它们会引用上面提到的AdopOpenJDK项目。好的。如何安装
Oracle或Azul提供的安装程序操作非常简单。只需在Mac上运行安装程序应用程序即可。出现一个窗口,指示安装进度。好的。
完成后,通过以下方式验证您的JVM安装:好的。
- 访问
/Library/Java/JavaVirtualMachines/ 文件夹查看新JVM的项目。 - 运行诸如terminal.app和
java -version 类型的控制台以查看您的JVM的品牌和版本号。
验证成功后,卸载finder中的.dmg图像。然后把你下载的.dmg文件扔掉。好的。好啊。
最好的方法是使用BREW包管理器,但命令
1 | brew cask install java8 |
失败并出现错误:
1 |
所以用
1 | brew cask install caskroom/versions/java8 |
如何找到"caskroom/versions/java8":使用BREW搜索命令:
1 | brew cask search java8 |
使用BREW
1 | brew install Caskroom/cask/java |
似乎还没有人提到过sdk man(https://sdk man.io/)。
SKDMAN允许在Mac上安装多个Java版本,并在这些版本之间轻松切换。更多信息请访问https://sdkman.io/usage。
例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | $ sdk list java ================================================================================ Available Java Versions ================================================================================ * 12.ea.20-open 11.0.1-zulu > * 11.0.1-open 10.0.2-zulu 10.0.2-open 9.0.7-zulu 9.0.4-open 8.0.192-zulu 8.0.191-oracle + 8.0.181-oracle 7.0.181-zulu 1.0.0-rc-10-grl 1.0.0-rc-9-grl 1.0.0-rc-8-grl ================================================================================ + - local version * - installed > - currently in use ================================================================================ $ sdk install java 8.0.191-oracle $ sdk use java 8.0.191-oracle Using java version 8.0.191-oracle in this shell. $ java -version java version"1.8.0_191" Java(TM) SE Runtime Environment (build 1.8.0_191-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode) $ sdk use java 11.0.1-open Using java version 11.0.1-open in this shell. $ java -version openjdk version"11.0.1" 2018-10-16 OpenJDK Runtime Environment 18.9 (build 11.0.1+13) OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13, mixed mode) ``` |
最简单的方法
1 2 3 4 5 6 | 1) brew cask install java (No need to install cask separately it comes with brew) 2) java -version java version"1.8.0_131" Java(TM) SE Runtime Environment (build 1.8.0_131-b11) |
P.S-什么是酿造桶?homebrew cask扩展了homebrew,解决了在使用homebrew安装应用程序后执行额外命令"要安装,拖动此图标…"的麻烦。
最简单的方法是从以下站点下载dmg文件并双击安装
1 | http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html |
从主目录查找可用的JVM
1 | ls -al /Library/Java/JavaVirtualMachines |
并使用相关版本更新.bash_概要文件
1 2 | export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_XXX.jdk./Contents/Home export PATH=$JAVA_HOME/bin:$PATH |
最后
1 | source ~/.bash_profile |
我建议使用非常容易更改版本(临时和永久)的sdk man,它还提供其他sdk。我已经使用sdk man一年多了。
https://sdkman.io网站/
下面的步骤对我有用。
1)卸载所有JDK
在终端窗口中,复制并粘贴以下命令:
1 2 3 | sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin sudo rm -fr /Library/PreferencePanes/JavaControlPanel.prefpane |
2)安装Apple JDK。
https://support.apple.com/kb/dl1572?区域环境
3)从Oracle下载最新的JDK并安装,对我来说是JDK 1.82。
http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html
这就是它的魅力所在。
我也有同样的问题。但经过一点点的打击和审判,我终于解决了这个问题。
尝试通过sudo rm删除1.6 sdk并重新启动Mac。
再次下载.dmg文件。您下载的.dmg安装程序很可能已损坏。再次安装。
安装后运行以下命令。它为JDK8提供了路径。/usr/libexec/java_home-1.8版
您还可以运行并查看JDK 8文件夹。文件可能被隐藏。LS-AL/Lab溴e/Java/JavaValtualMa/