组装一台计算机 java

一段时间以前,我写了一篇文章《 用示例解释Java Lambda表达式》,但是我很容易浏览Java 8,因为我在项目中使用了Java 8,并且允许我安装和使用它。 但是在我当前的项目中,我们仍在使用Java 8,现在我想升级自己并学习Java 11,但无法安装它。

许多Java开发人员都会遇到这种情况,有时您想学习和探索Java的最新版本,例如Java 11,但是由于您和您的团队正在使用某些旧版本(例如Java 8)而无法将其安装在计算机上。不想破坏您的项目。

或者假设您正在处理多个项目,其中一些使用Java 8,而一些新项目使用Java11。因此,为了并行处理这些项目,您将需要在计算机上安装多个JDK,并且应该能够切换它们之间。

如果有办法,该怎么办?如果能够安装多个版本的Java,然后根据需要关闭然后再打开它们,该怎么办?

嗯,有一个名为SDKMan的工具,它可以让我们按照官方网站进行操作:


SDKMan! 是用于管理多个版本的并行版本的工具
大多数基于Unix的系统上的软件开发套件 它提供了一个方便的命令行界面(CLI)和API,用于安装,切换,删除和列出候选人。

关于SDKMan的一些要点如下:

  1. SDKMan是免费使用的,它是由开源社区开发的。
  2. SDKMan是用bash编写的,它只需要curl和zip / unzip程序就可以出现在您的系统上。
  3. SDKMan可以为JVM安装大约29个软件开发套件,例如Java,Groovy,Scala,Kotlin和Ceylon。 蚂蚁,Gradle,Grails,Maven,SBT,Spark,Spring Boot,Vert.x。
  4. 我们不需要担心设置_HOMEPATH环境变量,因为SDKMan会自动处理它。

安装SDKMan

SDKMan可以在任何基于UNIX的平台上运行,例如Mac OSX,Linux,Cygwin,Solaris和FreeBSD,我们可以使用以下命令进行安装:

只需打开一个新终端并输入:

 $ curl -s " https://get.sdkman.io " | bash | bash  $ source "$HOME/.sdkman/bin/sdkman-init.sh" 

我们可以使用sdk version验证安装,并且sdk help命令将为我们提供有关sdk命令用法的完整帮助。

因为SDKMan是用bash编写的,所以只要求curl和zip / unzip出现在系统上即可。 您也可以先在Windows环境中安装Cygwin或Git Bash ,然后再运行上述命令,然后在Windows上安装SDKMan。

使用SDKMan安装Java

SDKMan支持为JVM安装29个软件开发套件,例如Java,Groovy,Scala,Kotlin和Ceylon,Grails,SBT,Spark,Spring Boot。 我们可以使用sdk list命令获取完整列表。

SDKMan还可以帮助我们安装Ant,Maven和Gradle之类的构建工具。您可以在Java Build Tools比较中阅读有关这些构建工具的更多信息:Ant vs Maven vs Gradle 。

命令sdk list java将为我们提供可以使用SDKMan安装的Java版本列表,如下所示:

 $ sdk list java  ================================================================================  Available Java Versions  ================================================================================ 13 .ea. 02 -open 1.0 . 0 -rc- 10 -grl 12 .ea. 26 -open 1.0 . 0 -rc- 9 -grl 11.0 . 2 -zulu 1.0 . 0 -rc- 8 -grl 11.0 . 2 -open 11.0 . 1 -zulufx 10.0 . 2 -zulu 10.0 . 2 -open 9.0 . 7 -zulu 9.0 . 4 -open 8.0 . 202 -amzn 8.0 . 201 -zulu 8.0 . 201 -oracle 8.0 . 192 -zulufx 7.0 . 181 -zulu 1.0 . 0 -rc- 11 -grl  ================================================================================  + - local version  * - installed  > - currently in use  ================================================================================ 

现在,假设我们要安装Java v9的OpenJDK版本,那么我们将在终端中执行以下命令,该命令还将更新PATH和JAVA_HOME变量:

 $ sdk install java 9.0 . 4 -open 

该命令将花费一些时间,因为它将在我们的计算机上下载JDK,并且该命令将输出如下内容:

 Downloading: java 9.0 . 4 -open  In progress...  ######################################################################## 100.0 %  Repackaging Java 9.0 . 4 -open...  Done repackaging...  Cleaning up residual files...  Installing: java 9.0 . 4 -open  Done installing!  Setting java 9.0 . default -open as 4 default . 

现在,如果我们检查Java版本和JAVA_HOME,我们可以看到Java已更新至9.0.4。

 $ java -version  openjdk version "9.0.4"  OpenJDK Runtime Environment (build 9.0 . 4 + 11 )  OpenJDK 64 -Bit Server VM (build 9.0 . 4 + 11 , mixed mode)  $ echo $JAVA_HOME  /Users/xbbnrde/.sdkman/candidates/java/current 

我们可以按照相同的过程安装上面列表中可以看到的任何版本,让我们假设我们要安装Java V11版本,然后可以执行以下命令:

 $ sdk install java 11.0 . 2 -open  Downloading: java 11.0 . 2 -open  In progress...  ######################################################################## 100.0 %  Repackaging Java 11.0 . 2 -open...  Done repackaging...  Cleaning up residual files...  Installing: java 11.0 . 2 -open  Done installing!  Do you want java 11.0 . 2 -open to be set as default ? (Y/n): Y ? (Y/n): Y  Setting java 11.0 . 2 -open as default . 

现在,如果再次检查Java版本和JAVA_HOME,我们可以看到Java已更新为11.0.2:

 $ java -version  openjdk version "11.0.2" 2019 - 01 - 15  OpenJDK Runtime Environment 18.9 (build 11.0 . 2 + 9 )  OpenJDK 64 -Bit Server VM 18.9 (build 11.0 . 2 + 9 , mixed mode)  $ echo $JAVA_HOME  /Users/xbbnrde/.sdkman/candidates/java/current 

注意:有时候,您需要关闭并重新打开终端才能看到更改。

将SDKMan指向您现有的已安装Java版本

首先,我们需要找出Java在您计算机上的安装位置。 在我的机器上,它安装在文件夹jdk1.8.0_172.jdk ,该文件夹位于/Library/Java/JavaVirtualMachines文件夹下,让我们通过
<java-folder>

我们要做的第二件事是在已安装的<java-folder>和SDKMan之间建立符号链接,我们可以通过运行以下命令来做到这一点:

 $ ln -s /Library/Java/JavaVirtualMachines/<java-folder> ~/.sdkman/candidates/java/<java-folder>  $ sudo ln -s /Library/Java/JavaVirtualMachines/<java-folder>/Contents/Home/bin ~/.sdkman/candidates/java/<java-folder>/bin 

现在,如果再次执行sdk list java命令,我们将得到:

 ================================================================================  Available Java Versions  ================================================================================ + jdk1. 8 .0_172.jd 8.0 . 201 -zulu 13 .ea. 02 -open 8.0 . 201 -oracle 12 .ea. 26 -open 8.0 . 192 -zulufx 11.0 . 2 -zulu 7.0 . 181 -zulu > * 11.0 . 2 -open 1.0 . 0 -rc- 12 -grl 11.0 . 2 .j9-adpt 1.0 . 0 -rc- 11 -grl 11.0 . 2 .hs-adpt 1.0 . 0 -rc- 10 -grl 11.0 . 1 -zulufx 1.0 . 0 -rc- 9 -grl 10.0 . 2 -zulu 1.0 . 0 -rc- 8 -grl 10.0 . 2 -open 9.0 . 7 -zulu * 9.0 . 4 -open 8.0 . 202 -amzn 8.0 . 202 .j9-adpt 8.0 . 202 .hs-adpt  ================================================================================  + - local version  * - installed  > - currently in use  ================================================================================ 

我们可以清楚地看到我们的机器和JDK上已经安装了3个JDK
到目前为止,正在使用11.0.2-open 。 但是,如果我们要在它们之间切换或安装新的,我们可以使用sdk use java <version_which_you_want_to_use>轻松地做到这一点,请sdk use java <version_which_you_want_to_use> ,如下所示:

使用Java 9

 $ sdk use java 9.0 . 4 -open  Using java version 9.0 Using java version . 4 -open in this shell. -open in shell.  $ java -version  openjdk version "9.0.4"  OpenJDK Runtime Environment (build 9.0 . 4 + 11 )  OpenJDK 64 -Bit Server VM (build 9.0 . 4 + 11 , mixed mode) 

使用本地安装的Java 8

 $ sdk use java jdk1. 8 .0_172.jdk  Using java version jdk1. 8 .0_172.jdk in this shell.  $ java -version  java version "1.8.0_172"  Java(TM) SE Runtime Environment (build 1.8 .0_172-b11)  Java HotSpot(TM) 64 -Bit Server VM (build 25.172 -b11, mixed mode) 

使用Java 11

 $ sdk use java 11.0 . 2 -open  Using java version 11.0 Using java version . 2 -open in this shell. -open in shell.  $ java -version  openjdk version "11.0.2" 2019 - 01 - 15  OpenJDK Runtime Environment 18.9 (build 11.0 . 2 + 9 )  OpenJDK 64 -Bit Server VM 18.9 (build 11.0 . 2 + 9 , mixed mode) 


使用sdk use命令只能使您在执行sdk use命令的同一终端外壳中使用指定版本的JDK。 并且,如果您关闭终端并再次打开它,则将使用以前安装的版本。

但是,如果要为所有终端和应用程序激活一个JDK版本,则可以使用命令sdk default java <your_version>

 $ sdk default java 11.0 . 2 -open  Default java version set to 11.0 . 2 -open  $ java -version  openjdk version "11.0.2" 2019 - 01 - 15  OpenJDK Runtime Environment 18.9 (build 11.0 . 2 + 9 )  OpenJDK 64 -Bit Server VM 18.9 (build 11.0 . 2 + 9 , mixed mode) 

或者,您可以卸载该版本并再次安装,如下所示,它将版本设置为当前的JDK。

卸载JDK版本

如果要卸载任何JDK版本,例如11.0.2-open ,则可以执行以下操作:

 $ sdk uninstall java 11.0 . 2 -open 

并且如果您想重新安装卸载的版本,可以再次安装它,这一次SDKMan将不会下载它,因为它已经在您的计算机上安装了(除非您不手动删除它)。

 $ sdk install java 11.0 . 2 -open  Found a previously downloaded java 11.0 . 2 -open archive. Not downloading it again... -open archive. Not downloading it again...  Installing: java 11.0 . 2 -open  Done installing!  Do you want java 11.0 . 2 -open to be set as default ? (Y/n): y ? (Y/n): y  Setting java 11.0 . 2 -open as default . 

使用从IntelliJ IDEA安装的SDMan JDK

SDKMan将所有JDK安装在.sdkman/candidates/java/文件夹下,您可以在主目录中找到.sdkman文件夹。

在IntelliJ中打开任何Java项目后,您可以按Command + :打开项目结构窗口。 在该窗口中,您需要单击
Project SDK部分的New...下,您可以在浏览窗口中输入.sdkman/candidates/java/ ,并且可以从.sdkman/candidates/java/选择任何JDK。

因为.sdkman是隐藏的文件夹,并且如果您在查找它时遇到问题,则始终可以使用以下命令使用非隐藏的文件夹创建指向它的符号链接。

 $ ln -s ~/.sdkman ~/sdkman 

您可以在此Github存储库中找到我的文章的完整源代码,请随时提供宝贵的反馈。

翻译自: https://www.javacodegeeks.com/2019/04/how-to-install-multiple-versions-of-java-on-the-same-machine.html

组装一台计算机 java

组装一台计算机 java_如何在同一台计算机上安装多个Java版本相关推荐

  1. 如何在同一台计算机上安装多个Java版本

    一段时间以前,我写了一篇文章< 用示例解释Java Lambda表达式>,但是我很容易浏览Java 8,因为我在项目中使用了Java 8,并且允许我安装和使用它. 但是在我当前的项目中,我 ...

  2. python多个版本可不可以装在一起_可以在同一台计算机上安装多个Python版本。

    可以在同一台计算机上安装多个Python版本. 答:对 合理膳食的核心问题是 ( ) 答:膳食结构 青天明月来几时?我今停杯一问之.人攀明月不可得,. --李白<把酒问月> 答:月行却与人 ...

  3. “飞天”就是一个操作系统,最重要的功能就是资源管理;这套系统简单说就是把所有资源抽象成一台计算机,并通过互联网提供计算服务。...

    "飞天"就是一个操作系统,最重要的功能就是资源管理:这套系统简单说就是把所有资源抽象成一台计算机,并通过互联网提供计算服务. 转载于:https://www.cnblogs.com ...

  4. 将Windows驱动程序从一台计算机复制到另一台计算机

    Driver problems are a source of never-ending issues in the Windows world. Often you'll have a workin ...

  5. 一台计算机多个显示,一台计算机如何有两个显示器并显示不同的内容?

    Internet上的某些人说,计算机是用几根电线连接的,鼠标和键盘是相互连接的,并且彼此之间没有干扰,所以很好.是真的吗我头晕. 好的,我要作一个演讲 一台计算机最多可以连接6个显示器. 当前,大多数 ...

  6. 查找另一台计算机,查找 Outlook 数据文件,将 Outlook 数据文件从一台计算机转移到另一台计算机...

    对 Office 2010 的支持于 2020 年 10 月 13 日结束 升级到 Microsoft 365 以在任何设备上随时随地工作,并继续获得支持.立即升级 注意: 您的配置可能不包含所有这些 ...

  7. mac停止使用itunes_如何将iTunes收藏从一台计算机转移到另一台计算机

    mac停止使用itunes If you're an iTunes user, when you get a new machine you probably want to transfer all ...

  8. 不同平台上安装python的方式是一样的对还是错_不可以在同一台计算机上安装多个不同的Python版本...

    [多选题]食品处于冰点以上时,影响水分活度 A w 的因素有( ). [单选题]不属于蛋白质起泡的必要条件的是() [多选题]蛋白质变性后,可能出现的变化() [单选题]腐竹的加工应用的是蛋白质的哪种 ...

  9. 计算机双系统,自己在计算机上安装双系统

    您是否始终打开系统?为什么有人在打开计算机时选择系统,而当他们打开计算机时,默认值为一个系统. 今天,我将教您如何轻松 让我们看看如何在我们的计算机上安装双系统. 实际上,有时更容易完成更复杂的事情, ...

最新文章

  1. 桐城中学2021高考成绩查询,桐城中学2019高考成绩喜报、一本二本上线情况
  2. npm 发布包填坑指南
  3. Linux 操作系统原理 — 内存 — 物理存储器与虚拟存储器
  4. 几道MySQL索引相关的重点面试题
  5. Apache-tomcat
  6. JAVAWEB入门之Sevlet的执行原理
  7. C|C++中的静态全局变量,静态局部变量,全局变量,局部变量的区别
  8. html上传文件是否合法,java 在前端页面上传图片文件,验证是否为合法的图片
  9. python勿使用mutable值作为默认参数
  10. 蓝桥杯 ALGO-11算法训练 瓷砖铺放(递归/动态规划)
  11. 数据引用Data References
  12. HTML与css语法笔记
  13. 面试题之请描述一下Java类加载过程
  14. ad如何绘制拼版_ad 拼板
  15. [edu #63][div2 #554][div3 #555]
  16. 创建Qsys_PIO IP核
  17. 苹果系统上安装windows教程(图文详解+工具)一看就会!
  18. 汽车维修企业管理【12】
  19. Centos 7 | mariadb/mysql | [ERROR] InnoDB: Unable to lock ./ibdata1 error: 11
  20. 高德地图自定义定位按钮后搜索周边

热门文章

  1. G - Best ACMer Solves the Hardest Problem Gym - 101955G
  2. 「ROI 2017 Day 2」反物质(单调队列优化dp)
  3. [UVA - 11865]Stream My Contest(最小树形图+朱刘算法)
  4. 洛谷P6302:回家路线(斜率优化)
  5. P1251-餐巾计划问题【费用流】
  6. nssl1351-矩形反色【离散,差分】
  7. jzoj3792,P2062-分队问题【贪心】
  8. P1196 ssl1225-银河英雄传说【图论,并查集】
  9. 【模板】最大流之上下界可行流
  10. 【二分】递增(luogu 3902)