brew cask info java
显示:
Java:13,33:5B8A42F3905B406298B72D750B6919F6
https://openjdk.java.net/
所以我可以从那里安装它,但然后呢?我只能用新版本吗?
注意:这些解决方案适用于Java的各种版本,包括Java8到Java15,甚至是新的Java16。这包括OpenJDK、Oracle、IBM、Azul、Amazon Correto、Graal等公司的替代JDK。轻松使用Java7、Java8、Java9、Java10、Java11、Java12、Java13、Java14、Java15和Java16!
对于如何进行安装以及管理JDK切换,您有几个选项。安装可以通过Homebrew、SDKMAN、Jabba或手动安装完成。切换可以由JEnv、SDKMAN、Jabba完成,也可以通过设置java_home
手动完成。下文将对所有这些进行说明。
首先,使用您喜欢的任何方法安装Java,包括自制、SDKMAN或手动安装tar.gz文件。手动安装的优点是JDK的位置可以放在Mac OSX的标准化位置。否则,还有一些更简单的选项,比如SDKMAN,它也将为JVM安装其他重要和常用的工具。
SDKMAN有点不同,它同时处理安装和切换。SDKMAN还将安装的JDK放入自己的目录树中,该目录树通常为~/.SDKMAN/ceptendes/java
。SDKMAN允许设置全局默认版本和特定于当前shell的版本。
>
从https://SDKMAN.io/install安装SDKMAN
列出可用的Java版本,以确保您知道版本ID
sdk list java
安装其中一个版本,例如Java16:
sdk install java 16-open
将Java16设置为默认版本:
sdk default java 16-open
或切换到当前终端会话的16:
sdk use java 16-open
sdk list java
并安装其他版本,例如Amazon的JDK11:
sdk install java 11.0.10.9.1-amzn
SDKMAN可以使用以前安装的现有版本。只需进行本地安装,提供您自己的版本标签和JDK的位置:
sdk install java my-local-13 /Library/Java/JavaVirtualMachines/jdk-13.jdk/Contents/Home
并自如地使用:
sdk use java my-local-13
在SDKMAN使用指南以及它可以安装和管理的其他SDK中可以获得更多信息。
当您更改版本时,SDKMAN将自动为您管理path
和java_home
。
将java_home
环境变量设置为指向取消JDK存档的方向。
有关更多信息,请参阅手动安装的特定答案。有关如何管理多个手动安装的详细信息,还请参阅下面的“手动切换版本”一节。
在2018年10月3日之前,Homebrew Cask中提供的Java版本确实是Oracle JVM。但是,现在它已经更新为OpenJDK。请务必更新Homebrew,然后您将看到可供安装的最新版本。
>
如果尚未安装自制程序,请安装。确保已更新:
brew update
如果您想使用AdoptOpenJDK版本(它通常是最新版本),请添加casks tap:
brew tap adoptopenjdk/openjdk
这些cask经常更改它们的Java版本,并且可能会有其他带有其他Java版本的taps。
查找可安装版本:
brew search java
或对于AdoptOpenJDK版本:
brew search jdk
brew info java
brew info adoptopenjdk
brew install java
brew install --cask adoptopenjdk16
OpenJDK的其他一些风格包括:
可以按照网站上的说明安装Azul Systems Java Zulu认证的OpenJDK版本。
Zulu®是OpenJDK的认证版本,完全符合Java SE标准。Zulu是100%开源的,可以免费下载。现在,Java开发人员、系统管理员和最终用户都可以享受开源Java的全部好处,具有部署灵活性和对升级时间的控制。
/usr/libexec/java_home -V
匹配Java虚拟机(8):
16,x86_64:“OpenJDK 16”/Library/Java/JavaVirtualMachines/AdoptoPenJDK-16.jdk/Contents/Home 15,x86_64:“OpenJDK 15”/Library/Java/JavaVirtualMachines/JDK-15.jdk/Contents/Home 14,x86_64:“OpenJDK 14”/Library/Java/JavaVirtualMachines/JDK-14.jdk/Contents/Home 13,x86_64:“OpenJDK 13”
您还可以使用-v
报告特定Java版本的位置。例如Java 16:
/usr/libexec/java_home -v 16
/library/java/javavirtualmachines/adoptopenjdk-16.jdk/contents/home
在使用诸如JEnv之类的工具时,或者在SDKMAN中添加本地安装,或者在Jabba中链接系统JDK时,知道安装的JDK的位置也很有用--而且您需要知道在哪里可以找到它们。
如果需要查找其他工具安装的JDK,请检查以下位置:
~/.sdkman/ceptendes/java/
~/.jabba/jdk
Java可执行文件是一个包装器,它将使用java_home
中配置的任何JDK,因此您可以更改它来更改正在使用的JDK。
例如,如果您将JDK 16安装或解压缩到/library/java/javaVirtualMachines/jdk-16.JDK
中,如果它是最高版本号,那么它应该已经是默认值,如果不是,您可以简单地设置:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-16.jdk/Contents/Home
现在,路径中的任何Java可执行文件都将看到这一点并使用正确的JDK。
如前所述,使用/usr/libexec/java_home
实用工具可以帮助您创建别名或运行命令,通过标识不同JDK安装的位置来更改Java版本。例如,在.profile
或.bash_profile
中创建shell别名,以便为您更改java_home
:
export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_9_HOME=$(/usr/libexec/java_home -v9)
export JAVA_10_HOME=$(/usr/libexec/java_home -v10)
export JAVA_11_HOME=$(/usr/libexec/java_home -v11)
export JAVA_12_HOME=$(/usr/libexec/java_home -v12)
export JAVA_13_HOME=$(/usr/libexec/java_home -v13)
export JAVA_14_HOME=$(/usr/libexec/java_home -v14)
export JAVA_15_HOME=$(/usr/libexec/java_home -v15)
export JAVA_16_HOME=$(/usr/libexec/java_home -v16)
alias java8='export JAVA_HOME=$JAVA_8_HOME'
alias java9='export JAVA_HOME=$JAVA_9_HOME'
alias java10='export JAVA_HOME=$JAVA_10_HOME'
alias java11='export JAVA_HOME=$JAVA_11_HOME'
alias java12='export JAVA_HOME=$JAVA_12_HOME'
alias java13='export JAVA_HOME=$JAVA_13_HOME'
alias java14='export JAVA_HOME=$JAVA_14_HOME'
alias java15='export JAVA_HOME=$JAVA_15_HOME'
alias java16='export JAVA_HOME=$JAVA_16_HOME'
# default to Java 16
java16
然后要更改版本,只需使用别名。
java8
java -version
当然,手动设置java_home
也可以工作!
JEnv希望Java JDK已经存在于机器上,并且可以位于任何位置。通常,您会在/library/Java/JavaVirtualMachines/
中找到已安装的Java JDK。JEnv允许设置Java的全局版本,一个是针对当前shell的,另一个是每个目录的本地版本,当一些项目需要不同于其他项目的版本时,这个版本很方便。
>
如果还没有安装JEnv,请访问网站http://www.JEnv.be/以获得手动安装或使用自制程序的说明。
将任何Java版本添加到JEnv(如果您将其放在其他位置,请调整目录):
jenv add /Library/Java/JavaVirtualMachines/jdk-16.jdk/Contents/Home
使用以下命令设置全局版本:
jenv global 16
您还可以使用jenvadd
以类似的方式添加其他现有版本,并列出可用的版本。例如Java 8:
jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
jenv versions
有关更多命令,请参阅JEnv文档。现在,您可以随时在任何Java版本(Oracle、OpenJDK、other)之间切换,可以针对整个系统、shell或每个本地目录进行切换。
为了在使用JEnv时帮助管理java_home
,您可以添加导出插件来完成此操作。
$ jenv enable-plugin export
You may restart your session to activate jenv export plugin echo export plugin activated
导出插件可能不会调整java_home
(如果已经设置了),因此您可能需要清除配置文件中的这个变量,以便能够由Jenv管理它。
您还可以使用jenv exec
运行单个命令,并为该命令正确设置java_home
和path
,这可能包括打开另一个shell。
Jabba还处理安装和切换。Jabba还将安装的JDK放入自己的目录树中,该目录树通常为~/.Jabba/jdk
。
>
按照主页上的说明安装Jabba。
列出可用的JDK
jabba LS-远程
jabba安装openjdk@1.12.0
使用它:
jabba使用openjdk@1.12.0
问题内容: 我想在Mac OSX上安装OpenJDK Java,并使其与其他JDK一起工作,因为它是较新的版本。当前,我下载了tar.gz并将其放置在我的路径中,但这很难维护。 我发现唯一可以自动执行更多操作的其他安装是通过Homebrew cask进行的安装。看起来也只有当前版本: 显示: Java:13,33:5b8a42f3905b406298b72d750b6919f6 https://o
我正在使用管理版本,ala PEP 440。 我已将几个版本上载到私有存储库: 我的问题是现在当我使用 我得到的版本是当我期望得到。 有没有办法让pip忽略“本地版本”,只安装准确的版本,而不必上传到不同的索引(即staging和stable)? 编辑: 我已尝试使用和标志,但问题仍然存在;皮普更喜欢0.0。2版本到0.0版本。2版本。 附加编辑: 我使用的是和python2.7
我需要切换上的Java版本,但不确定如何切换,我现在的版本是但我想切换到: 我想我的Mac上没有这样的版本吧?怎样才能安装它,然后再切换到它呢?谢谢!
无法安装包“MVVMCROSS.PortableSupport 3.2.2”。您正试图将此包安装到目标为“Xamarin.ios,version=v1.0”的项目中,但该包不包含与该框架兼容的任何程序集引用或内容文件。有关详细信息,请与包作者联系。 请帮忙。
我正在使用python版本3.10.2,但是我想降级到3.9,因为它与我项目中的库不兼容。我怎样才能用终端命令做到这一点? 因此,当我键入<code>python3——版本</code>时,我的版本是3.10.2,我想将其降级。IDE是pycharm