IT story

버전 전환을 허용하는 Mac OSX에 Java를 어떻게 설치합니까?

hot-time 2020. 4. 29. 08:11
반응형

버전 전환을 허용하는 Mac OSX에 Java를 어떻게 설치합니까?


Mac OSX에 OpenJDK Java를 설치하고 최신 릴리스이므로 다른 JDK와 함께 작동하도록하고 싶습니다. 현재 tar.gz를 다운로드하여 경로에 배치했지만 유지 관리하기가 어렵습니다.

더 많은 작업을 자동으로 수행하는 다른 설치는 Homebrew cask를 통한 설치입니다. 현재 버전 만 보입니다.

brew cask info java

쇼 :

자바 : 12,33
https://jdk.java.net/

그래서 거기에서 설치할 수 있지만 무엇입니까? 새 버전 만 사용하고 있습니까?

업데이트 : 2019 년 3 월 19 일부터 Homebrew cask에서 OpenJDK 12를 가리키고 있습니다.


참고 : 이 솔루션은 Java 8 및 새로운 Java 13을 포함한 다양한 버전의 Java와 나열된 버전 관리자가 다루는 다른 이전 Java 버전에 적용됩니다. 여기에는 OpenJDK, Oracle, IBM, Azul, Amazon Correto, Graal 등의 대체 JDK가 포함됩니다. Java 7, Java 8, Java 9, Java 10, Java 11, Java 12 및 Java 13과 쉽게 작업하십시오!

설치 및 JDK 전환 관리 방법에 대한 몇 가지 옵션이 있습니다. Homebrew, SDKMAN , Jabba 또는 수동 설치로 설치를 수행 할 수 있습니다 . JEnv , SDKMAN , Jabba 또는 설정을 통해 수동으로 전환 할 수 있습니다 JAVA_HOME. 이 모든 것이 아래에 설명되어 있습니다.


설치

먼저 Homebrew, SDKMAN 또는 tar.gz 파일의 수동 설치를 포함하여 원하는 방법을 사용하여 Java를 설치하십시오. 수동 설치의 장점은 JDK의 위치를 ​​Mac OSX의 표준화 된 위치에 둘 수 있다는 것입니다.

SDKMAN으로 설치

이것은 JDK를 비표준 디렉토리에 설치한다는 경고와 함께 설치 및 버전 전환을 처리한다는 점에서 간단한 모델입니다.

< 아래 "SDKMAN으로 버전 설치 및 전환"참조 >

Jabba를 사용하여 설치

또한 설치 및 버전 전환이 동일한 도구로 처리된다는 점에서 간단한 모델입니다. 비표준 디렉토리에 설치됩니다.

< 아래 "Jabba를 사용하여 버전 설치 및 전환"참조 >

OpenJDK 다운로드 페이지에서 수동으로 설치하십시오.

  1. http://jdk.java.net/ 에서 Mac OSX 용 OpenJDK를 다운로드하십시오 (예 : Java 13 ).

  2. OpenJDK tar를 보관 해제하고 결과 폴더 (예 :) 를 JDK 설치의 표준 및 예상 위치이므로 폴더에 jdk-13.jdk넣습니다 /Library/Java/JavaVirtualMachines/. 원하는 곳 어디든지 설치할 수 있습니다.

Homebrew와 함께 설치

2018 년 10 월 3 일 이전에 Homebrew Cask에서 사용 가능한 Java 버전은 실제로 Oracle JVM이었습니다. 그러나 이제는 OpenJDK로 업데이트되었습니다. Homebrew를 업데이트하면 설치 가능한 최신 버전이 표시됩니다.

  1. Homebrew를 아직 설치 하지 않았다면 설치하십시오 . 업데이트되었는지 확인하십시오.

    brew update
    
  2. 아직하지 않은 경우 통 탭을 추가하십시오 (또는 3 단계에서 더 이상 이전 Java 버전이 표시되지 않음).

    brew tap homebrew/cask-versions
    

    과에 대한 AdoptOpenJDK의 버전, 그 탭을 추가합니다 :

    brew tap adoptopenjdk/openjdk
    

    이 캐스 크는 종종 Java 버전을 변경하며 추가 Java 버전으로 다른 탭이있을 수 있습니다.

  3. 설치 가능한 버전을 찾으십시오.

    brew search java   
    

    또는 AdoptOpenJDK 버전의 경우 :

    brew search jdk     
    
  4. 설치할 버전의 세부 사항을 확인하십시오.

    brew cask info java
    

    또는 AdoptOpenJDK 버전의 경우 :

    brew cask info adoptopenjdk
    
  5. 과 같은 JDK의 특정 버전을 설치 java11, adoptopenjdk8하거나, java또는 adoptopenjdk현재합니다. 예를 들면 다음과 같습니다.

    brew cask install java
    

    이전 버전의 정규화 된 경로를 사용할 수도 있습니다.

    brew cask install homebrew/cask-versions/java11
    

그리고 이것들은 /Library/Java/JavaVirtualMachines/Mac OSX에서 기대되는 전통적인 위치에 설치 될 것 입니다.

다른 설치 옵션 :

openJDK의 다른 특징은 다음과 같습니다.

Azul Systems Java Zulu 인증 OpenJDK 빌드는 해당 사이트 지침에 따라 설치할 수 있습니다.

Zulu®는 Java SE 표준을 완벽하게 준수하는 인증 된 OpenJDK 빌드입니다. Zulu는 100 % 오픈 소스이며 무료로 다운로드 할 수 있습니다. 이제 Java 개발자, 시스템 관리자 및 최종 사용자는 배포 유연성과 업그레이드 타이밍 제어를 통해 오픈 소스 Java의 모든 이점을 누릴 수 있습니다.

Amazon Correto OpenJDK 빌드는 버전 8 또는 버전 11 (다른 버전이 출시 될 예정)의 설치 패키지를 쉽게 사용할 수 있으며/Library/Java/JavaVirtualMachines/Mac OSX의 표준디렉토리에설치됩니다.

Amazon Corretto는 OpenJDK (Open Java Development Kit)의 무료 멀티 플랫폼 프로덕션 지원 배포판입니다. Corretto는 성능 향상 및 보안 수정을 포함하는 장기 지원을 제공합니다. Amazon은 수천 개의 프로덕션 서비스에서 내부적으로 Corretto를 실행하며 Corretto는 Java SE 표준과 호환되는 것으로 인증되었습니다. Corretto를 사용하면 Linux, Windows 및 macOS와 같은 널리 사용되는 운영 체제에서 Java 응용 프로그램을 개발하고 실행할 수 있습니다.


내 JDK는 어디에 있습니까?!?!

기본 시스템 위치에 이전에 설치된 Java JDK의 위치를 ​​찾으려면 다음을 사용하십시오.

/usr/libexec/java_home -V

일치하는 Java 가상 머신 (6) :
13, x86_64 : "OpenJDK 13"/Library/Java/JavaVirtualMachines/openjdk-13.jdk/Contents/Home 12, x86_64 : "OpenJDK 12"/ Library / Java / JavaVirtualMachines / jdk-12 .jdk / Contents / Home
11, x86_64 : "Java SE 11"/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home
10.0.2, x86_64 : "Java SE 10.0.2"/ Library / Java / JavaVirtualMachines /jdk-10.0.2.jdk/Contents/Home
9, x86_64 : "Java SE 9"/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home
1.8.0_144, x86_64 : "Java SE 8"/ 라이브러리 /Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home

를 사용하여 특정 Java 버전의 위치 만보고 할 수도 있습니다 -v. 예를 들어 Java 13의 경우 :

/usr/libexec/java_home -v 13

/ 라이브러리 /Java/JavaVirtualMachines/jdk-13.jdk/Contents/Home

설치된 JDK의 위치를 ​​아는 것은 JEnv와 같은 도구를 사용하거나 SDKMAN에 로컬 설치를 추가하거나 Jabba에서 시스템 JDK를 링크 할 때 유용하며 어디서 찾을 수 있는지 알아야합니다.

다른 도구로 설치된 JDK를 찾으려면 다음 위치를 확인하십시오.

  • SDKMAN은 ~/.sdkman/candidates/java/
  • Jabba 설치 ~/.jabba/jdk

수동으로 버전 전환

Java 실행 파일은에 구성된 JDK를 사용하는 래퍼이므로 사용중인 JDK JAVA_HOME도 변경하도록 변경할 수 있습니다.

예를 들어, JDK 13을 설치했거나 untar'd 한 경우 JDK 13 /Library/Java/JavaVirtualMachines/jdk-13.jdk이 가장 높은 버전 번호 인 경우이를 기본값으로 설정해야합니다.

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-13.jdk/Contents/Home

이제 경로에있는 Java 실행 파일이 무엇이든이를보고 올바른 JDK를 사용합니다.

/usr/libexec/java_home앞에서 설명한대로 유틸리티를 사용하면 별명을 작성하거나 다른 JDK 설치 위치를 식별하여 Java 버전을 변경하는 명령을 실행할 수 있습니다. 예를 들어, .profile또는 .bash_profile쉘 별명을 작성 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)

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'

# default to Java 13
java13

그런 다음 버전을 변경하려면 별칭을 사용하십시오.

java8
java -version

자바 버전 "1.8.0_144"

물론 JAVA_HOME수동 설정 도 가능합니다!


JEnv를 사용한 버전 전환

JEnv 는 Java JDK가 시스템에 이미 존재하고 어느 위치 에나있을 것으로 예상합니다. 일반적으로 설치된 Java JDK를 찾을 수/Library/Java/JavaVirtualMachines/있습니다. JEnv는 현재 쉘에 대한 하나의 글로벌 버전과 하나의 프로젝트가 다른 버전과 다른 버전을 필요로 할 때 편리한 디렉토리 별 로컬 버전을 설정하도록 허용합니다.

  1. Install JEnv if you haven't already, instructions on the site http://www.jenv.be/ for manual install or using Homebrew.

  2. Add any Java version to JEnv (adjust the directory if you placed this elsewhere):

    jenv add /Library/Java/JavaVirtualMachines/jdk-13.jdk/Contents/Home
    
  3. Set your global version using this command:

    jenv global 13
    

You can also add other existing versions using jenv add in a similar manner, and list those that are available. For example Java 8:

jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home 
jenv versions

See the JEnv docs for more commands. You may now switch between any Java versions (Oracle, OpenJDK, other) at any time either for the whole system, for shells, or per local directory.

To help manage JAVA_HOME while using JEnv you can add the export plugin to do this for you.

$ jenv enable-plugin export
  You may restart your session to activate jenv export plugin echo export plugin activated

The export plugin may not adjust JAVA_HOME if it is already set, so you may need to clear this variable in your profile so that it can be managed by JEnv.

You can also use jenv exec <command> <parms...> to run single commands with JAVA_HOME and PATH set correctly for that one command, which could include opening another shell.


Installing and Switching versions with SDKMAN

SDKMAN is a bit different and handles both the install and the switching. SDKMAN also places the installed JDK's into its own directory tree, which is typically ~/.sdkman/candidates/java. SDKMAN allows setting a global default version, and a version specific to the current shell.

  1. Install SDKMAN from https://sdkman.io/install

  2. List the Java versions available to make sure you know the version ID

    sdk list java
    
  3. Install one of those versions, for example, Java 13:

    sdk install java 13.0.0-open 
    
  4. Make 13 the default version:

    sdk default java 13.0.0-open
    

    Or switch to 13 for the session:

    sdk use java 13.0.0-open
    

When you list available versions for installation using the list command, you will see a wide variety of distributions of Java:

sdk list java

And install additional versions, such as JDK 8:

sdk install java 8.0.181-oracle

SDKMAN can work with previously installed existing versions. Just do a local install giving your own version label and the location of the JDK:

sdk install java my-local-13 /Library/Java/JavaVirtualMachines/jdk-13.jdk/Contents/Home

And use it freely:

sdk use java my-local-13

More information is available in the SDKMAN Usage Guide along with other SDK's it can install and manage.

SDKMAN will automatically manage your PATH and JAVA_HOME for you as you change versions.


Installing and Switching versions with Jabba

Jabba also handles both the install and the switching. Jabba also places the installed JDK's into its own directory tree, which is typically ~/.jabba/jdk.

  1. Install Jabba by following the instructions on the home page.

  2. List available JDK's

    jabba ls-remote
    
  3. Install Java JDK 12

    jabba install openjdk@1.12.0
    
  4. Use it:

    jabba use openjdk@1.12.0
    

You can also alias version names, link to existing JDK's already installed, and find a mix of interesting JDK's such as GraalVM, Adopt JDK, IBM JDK, and more. The complete usage guide is available on the home page as well.

Jabba will automatically manage your PATH and JAVA_HOME for you as you change versions.


This is how I did it.

Step 1: Install Java 11

You can download Java 11 dmg for mac from here: https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html

Step 2: After installation of Java 11. Confirm installation of all versions. Type the following command in your terminal.

/usr/libexec/java_home -V

Step 3: Edit .bash_profile

sudo nano ~/.bash_profile

Step 4: Add 11.0.1 as default. (Add below line to bash_profile file).

export JAVA_HOME=$(/usr/libexec/java_home -v 11.0.1)

to switch to any version

export JAVA_HOME=$(/usr/libexec/java_home -v X.X.X)

Now Press CTRL+X to exit the bash. Press 'Y' to save changes.

Step 5: Reload bash_profile

source ~/.bash_profile

Step 6: Confirm current version of Java

java -version

Manually switching system-default version without 3rd party tools:

As detailed in this older answer, on macOS /usr/bin/java is a wrapper tool that will use Java version pointed by JAVA_HOME or if that variable is not set will look for Java installations under /Library/Java/JavaVirtualMachines/ and will use the one with highest version. It determines versions by looking at Contents/Info.plist under each package.

Armed with this knowledge you can:

  • control which version the system will use by renaming Info.plist in versions you don't want to use as default (that file is not used by the actual Java runtime itself).
  • control which version to use for specific tasks by setting $JAVA_HOME

I've just verified this is still true with OpenJDK & Mojave.

On a brand new system, there is no Java version installed:

$ java -version
No Java runtime present, requesting install.

Cancel this, download OpenJDK 11 & 12ea on https://jdk.java.net ; install OpenJDK11:

$ cd /Library/Java/JavaVirtualMachines/
$ sudo tar xzf ~/Downloads/openjdk-11.0.1_osx-x64_bin.tar.gz

System java is now 11:

$ java -version
openjdk version "11.0.1" 2018-10-16
[...]

Install OpenJDK12 (early access at the moment):

$ sudo tar xzf ~/Downloads/openjdk-12-ea+17_osx-x64_bin.tar.gz 

System java is now 12:

$ java -version
openjdk version "12-ea" 2019-03-19
[...]

Now let's "hide" OpenJDK 12 from system java wrapper:

$ cd jdk-12.jdk/Contents/
$ sudo mv Info.plist Info.plist.disabled

System java is back to 11:

$ java -version
openjdk version "11.0.1" 2018-10-16
[...]

And you can still use version 12 punctually by manually setting JAVA_HOME:

$ export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home
$ java -version
openjdk version "12-ea" 2019-03-19
[...]

Another alternative is using SDKMAN! See https://wimdeblauwe.wordpress.com/2018/09/26/switching-between-jdk-8-and-11-using-sdkman/

First install SDKMAN: https://sdkman.io/install and then...

  1. Install Oracle JDK 8 with: sdk install java 8.0.181-oracle
  2. Install OpenJDK 11 with: sdk install java 11.0.0-open

To switch:

  • Switch to JDK 8 with sdk use java 8.0.181-oracle
  • Switch to JDK 11 with sdk use java 11.0.0-open

To set a default:

  • Default to JDK 8 with sdk default java 8.0.181-oracle
  • Default to JDK 11 with sdk default java 11.0.0-open

IMHO, There is no need to install all the additional applications/packages.

Check available versions using the command:

> /usr/libexec/java_home -V
Matching Java Virtual Machines (8):
    11, x86_64: "Java SE 11-ea" /Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home
    10.0.2, x86_64: "Java SE 10.0.2"    /Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Home
    9.0.1, x86_64:  "Java SE 9.0.1" /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
    1.8.0_181-zulu-8.31.0.1, x86_64:    "Zulu 8"    /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home
    1.8.0_151, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home
    1.7.0_80, x86_64:   "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home
    1.6.0_65-b14-468, x86_64:   "Java SE 6" /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
    1.6.0_65-b14-468, i386: "Java SE 6" /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

Now if you want to pick Azul JDK 8 in the above list, and NOT Oracle's Java SE 8, invoke the command as below:

> /usr/libexec/java_home -v 1.8.0_181
/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home

To pick Oracle's Java SE 8 you would invoke the command:

> /usr/libexec/java_home -v 1.8.0_151
/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home

As you can see the version number provided shall be the unique set of strings: 1.8.0_181 vs 1.8.0_151

참고URL : https://stackoverflow.com/questions/52524112/how-do-i-install-java-on-mac-osx-allowing-version-switching

반응형