我如何在 OS-X 上同时 运行 两个不同版本的 Java?

How do I run two different versions of Java concurrently on OS-X?

我不确定是将它放在 Superuser 还是 Stack Overflow 上,但我选择了这里,因为它涉及与 Gosu programming language.

相关的软件开发

Gosu 编程语言需要 Java 8,不接受 Java 11 或 JDK/JRE 的更高版本(不确定哪个是相关的)。这是一个问题,因为我有 Java 11 并且开发团队让这个问题持续了很长时间。它在错误跟踪器上,很长一段时间都没有人对此做任何事情。

我需要搭建一个Java8和Java11的开发环境,在Java8的环境中安装Gosu,然后想办法修改源Gosu 的代码,以便它与 Java 11. 有没有做过类似开发和项目分叉的人的指导?

我会下载 docker 并为每个 jdk 环境设置单独的 docker 容器。然后在适当的一个中添加 gosu 语言项目具有的任何其他依赖项。 docker 容器会将依赖项集分开并防止它们相互干扰。

这可以分成3个问题

  1. 安装多个 JDK 版本
  2. 您自己开发的每个项目的默认值
  3. Select 在 OSX
  4. 上 运行 时使用特定版本

对于主要是本地开发,您可能需要这样的流程

使用 brew

安装多个 JDK 版本
$ brew cask install caskroom/versions/java11
$ brew cask install adoptopenjdk/openjdk/adoptopenjdk8

$ ls /Library/Java/JavaVirtualMachines/
adoptopenjdk-12-openj9.jdk graalvm-ce-1.0.0-rc14      jdk1.8.0_65.jdk            openjdk-11.0.2.jdk

Select 之后使用 jEnv 进行开发(与 bash 配合得很好)https://www.jenv.be/

对于脚本,如果 OSX 中的 运行 使用 java_home

$ /usr/libexec/java_home -v 11
/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home
$ /usr/libexec/java_home -v 1.8
/Library/Java/JavaVirtualMachines/graalvm-ce-1.0.0-rc14/Contents/Home

关于Gosu和Java11,Gosu的最新版本1.15.0独家支持Java11。