Làm cách nào để cài đặt Java trên Mac OSX cho phép chuyển đổi phiên bản?


313

Tôi muốn cài đặt OpenJDK Java trên Mac OSX và để nó hoạt động cùng với các JDK khác vì đây là phiên bản mới hơn. Hiện tại, tôi đã tải xuống tar.gz và đặt nó vào đường dẫn của mình nhưng điều đó thật khó để duy trì.

Cài đặt khác duy nhất tôi thấy có nhiều thứ tự động hơn là cài đặt qua thùng Homebrew. Có vẻ như chỉ có phiên bản hiện tại:

brew cask info java

Trình diễn:

java: 13,33: 5b8a42f3905b406298b72d750b6919f6
https://openjdk.java.net/

Vì vậy, tôi có thể cài đặt nó từ đó, nhưng sau đó những gì? Tôi chỉ bị mắc kẹt với phiên bản mới?


Chỉ cần hỏi, chúng ta có thể giữ các thẻ câu hỏi giới hạn trong một phiên bản không? Vì không có kịch bản / bước cài đặt dành riêng cho phiên bản nào. Đây là một câu hỏi chung (không phải phiên bản cụ thể) và có thể đủ để được gắn thẻ chỉ với java-11 , vì tôi cho rằng đó là nơi mọi người sẽ bắt đầu tìm hiểu những gì câu hỏi và câu trả lời gợi ý.
Naman

Các tập lệnh trong câu trả lời bao gồm các phiên bản cụ thể mặc dù có thể dễ dàng diễn giải chúng cho các phiên bản khác. Tuy nhiên, nó cũng là một phần của những gì các thành viên cộng đồng tìm kiếm, vì vậy thật tốt khi giúp họ nhanh chóng tìm ra câu trả lời chính xác bằng cách giúp gây chú ý với các câu trả lời cập nhật và hiện đại và phân biệt với các chủ đề phiên bản 6 và phiên bản 8 lỗi thời. Có phiên bản ổn định mới nhất và phiên bản mới nhất tôi nghĩ là những thẻ hợp lý để giữ.
Jayson Minard

Tôi có thể khuyên bạn nên sử dụng jenv để quản lý nhiều phiên bản Java.
paranza

Câu trả lời:


718

lưu ý: Các giải pháp này hoạt động cho các phiên bản Java khác nhau bao gồm Java 8 và Java 13 mới và cho bất kỳ phiên bản Java nào trước đây được các trình quản lý phiên bản liệt kê. Điều này bao gồm các JDK thay thế từ OpenJDK, Oracle, IBM, Azul, Amazon Correto, Graal và hơn thế nữa. Dễ dàng làm việc với Java 7, Java 8, Java 9, Java 10, Java 11, Java 12 và Java 13!

Bạn có một vài tùy chọn về cách thực hiện cài đặt cũng như quản lý chuyển đổi JDK. Việc cài đặt có thể được thực hiện bằng Homebrew, SDKMAN , Jabba hoặc cài đặt thủ công. Việc chuyển đổi có thể được thực hiện bằng JEnv , SDKMAN , Jabba hoặc bằng tay bằng cách cài đặt JAVA_HOME. Tất cả những điều này được mô tả dưới đây.


Cài đặt

Đầu tiên, cài đặt Java bằng bất kỳ phương thức nào bạn thích bao gồm Homebrew, SDKMAN hoặc cài đặt thủ công tệp tar.gz. Ưu điểm của cài đặt thủ công là vị trí của JDK có thể được đặt ở vị trí được chuẩn hóa cho Mac OSX.

Cài đặt với SDKman

Đây là một mô hình đơn giản ở chỗ nó xử lý cả cài đặt và chuyển đổi phiên bản, với một cảnh báo rằng nó sẽ cài đặt JDK vào một thư mục không chuẩn.

< xem bên dưới "Cài đặt và chuyển đổi phiên bản với SDKMAN" >

Cài đặt bằng Jabba

Đây cũng là một mô hình đơn giản trong đó cả cài đặt và chuyển đổi phiên bản đều được xử lý bởi cùng một công cụ. Các cài đặt được thực hiện cho một thư mục không chuẩn.

< xem bên dưới "Cài đặt và chuyển đổi phiên bản với Jabba" >

Cài đặt thủ công từ trang tải xuống OpenJDK:

  1. Tải xuống OpenJDK cho Mac OSX từ http://jdk.java.net/ (ví dụ Java 13 )

  2. Hủy lưu trữ tar OpenJDK và đặt thư mục kết quả (nghĩa là jdk-13.jdk) vào /Library/Java/JavaVirtualMachines/thư mục của bạn vì đây là vị trí chuẩn và dự kiến ​​của các bản cài đặt JDK. Bạn cũng có thể cài đặt bất cứ nơi nào bạn muốn trong thực tế.

Cài đặt với Homebrew

Phiên bản Java có sẵn trong Homebrew Cask trước ngày 3 tháng 10 năm 2018 thực sự là JVM của Oracle. Tuy nhiên, bây giờ nó đã được cập nhật lên OpenJDK. Hãy chắc chắn cập nhật Homebrew và sau đó bạn sẽ thấy phiên bản mới nhất có sẵn để cài đặt.

  1. cài đặt Homebrew nếu bạn chưa có. Hãy chắc chắn rằng nó được cập nhật:

    brew update
  2. Thêm vòi nhấn, nếu bạn chưa có (hoặc bạn không thấy các phiên bản Java cũ hơn nữa ở bước # 3):

    brew tap homebrew/cask-versions

    và đối với các phiên bản AdoptOpenJDK , hãy thêm vào đó:

    brew tap adoptopenjdk/openjdk

    Các nhóm này thay đổi phiên bản Java của họ thường xuyên và có thể có các vòi khác ngoài đó với các phiên bản Java bổ sung.

  3. Tìm phiên bản có thể cài đặt:

    brew search java   

    hoặc cho các phiên bản AdoptOpenJDK:

    brew search jdk     
  4. Kiểm tra các chi tiết trên phiên bản sẽ được cài đặt:

    brew cask info java

    hoặc cho phiên bản AdoptOpenJDK:

    brew cask info adoptopenjdk
  5. Cài đặt một phiên bản cụ thể của JDK như java11, adoptopenjdk8hoặc chỉ javahoặc adoptopenjdkcho hiện hành. Ví dụ:

    brew cask install java

    Bạn cũng có thể sử dụng đường dẫn đủ điều kiện đến các phiên bản cũ hơn:

    brew cask install homebrew/cask-versions/java11

Và chúng sẽ được cài đặt vào /Library/Java/JavaVirtualMachines/vị trí truyền thống dự kiến ​​trên Mac OSX.

Các tùy chọn cài đặt khác:

Một số hương vị khác của openJDK là:

Các bản dựng OpenJDK được chứng nhận của Java Zulu Systems có thể được cài đặt bằng cách làm theo các hướng dẫn trên trang web của họ .

Zulu® là bản dựng OpenJDK được chứng nhận hoàn toàn tuân thủ tiêu chuẩn Java SE. Zulu là nguồn mở 100% và có thể tải xuống miễn phí. Giờ đây, các nhà phát triển Java, quản trị viên hệ thống và người dùng cuối có thể tận hưởng toàn bộ lợi ích của Java nguồn mở với tính linh hoạt triển khai và kiểm soát thời gian nâng cấp.

Các bản dựng Amazon Correto OpenJDK có thể dễ dàng sử dụng gói cài đặt cho phiên bản 8 hoặc phiên bản 11 (sắp có phiên bản khác) và cài đặt vào/Library/Java/JavaVirtualMachines/thư mụcchuẩntrên Mac OSX.

Amazon Corretto là một bản phân phối miễn phí, đa nền tảng, sẵn sàng sản xuất của Bộ công cụ phát triển Java mở (OpenJDK). Corretto đi kèm với sự hỗ trợ dài hạn sẽ bao gồm cải tiến hiệu suất và sửa lỗi bảo mật. Amazon điều hành Corretto nội bộ trên hàng ngàn dịch vụ sản xuất và Corretto được chứng nhận là tương thích với tiêu chuẩn Java SE. Với Corretto, bạn có thể phát triển và chạy các ứng dụng Java trên các hệ điều hành phổ biến, bao gồm Linux, Windows và macOS.


JDK của tôi đâu?!?!

Để tìm các vị trí của Java JDK được cài đặt trước đó tại các vị trí hệ thống mặc định, hãy sử dụng:

/usr/libexec/java_home -V

Phù hợp với các máy ảo Java (6):
13, x86_64: "OpenJDK 13" /L Library / Java / JavaVirtualMachines / openjdk-13.jdk /Contents / Home 12, x86_64: "OpenJDK 12" / Library / Java / Java .jdk / Nội dung / Trang chủ
11, x86_64: "Java SE 11"
/L Library / Java / JavaVirtualMachines / jdk-11.jdk / Content / 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" /
L Library / Java / JavaVirtualMachines / jdk-9.jdk / Content / Home 1.8.0_144, x86_64: "Java SE 8" / Thư viện /Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home

Bạn cũng có thể báo cáo vị trí của một phiên bản Java cụ thể bằng cách sử dụng -v. Ví dụ cho Java 13:

/usr/libexec/java_home -v 13

/ L Library / Java / JavaVirtualMachines / jdk-13.jdk / Content / Home

Biết vị trí của JDK đã cài đặt cũng hữu ích khi sử dụng các công cụ như JEnv hoặc thêm cài đặt cục bộ vào SDKMAN hoặc liên kết JDK hệ thống trong Jabba - và bạn cần biết nơi tìm chúng.

Nếu bạn cần tìm JDK được cài đặt bởi các công cụ khác, hãy kiểm tra các vị trí sau:

  • SDKman cài đặt để ~/.sdkman/candidates/java/
  • Jabba cài đặt để ~/.jabba/jdk

Chuyển đổi phiên bản thủ công

Tệp thực thi Java là một trình bao bọc sẽ sử dụng bất kỳ JDK nào được cấu hình JAVA_HOME, vì vậy bạn có thể thay đổi điều đó để thay đổi JDK nào đang được sử dụng.

Ví dụ: nếu bạn đã cài đặt hoặc hủy cài đặt JDK 13 thành /Library/Java/JavaVirtualMachines/jdk-13.jdknếu đó là số phiên bản cao nhất thì nó sẽ là mặc định, nếu không bạn có thể chỉ cần đặt:

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

Và bây giờ, bất cứ thứ gì có thể thực thi được trong Java đều có trong đường dẫn sẽ thấy điều này và sử dụng JDK chính xác.

Sử dụng /usr/libexec/java_hometiện ích như được mô tả trước đây giúp bạn tạo bí danh hoặc chạy các lệnh để thay đổi các phiên bản Java bằng cách xác định vị trí của các bản cài đặt JDK khác nhau. Ví dụ: tạo bí danh shell trong .profilehoặc .bash_profileđể thay đổi JAVA_HOMEcho bạn:

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

Sau đó, để thay đổi phiên bản, chỉ cần sử dụng bí danh.

java8
java -version

phiên bản java "1.8.0_144"

Tất nhiên, cài đặt JAVA_HOMEcũng hoạt động bằng tay!


Chuyển đổi phiên bản với JEnv

JEnv hy vọng các JDK của Java đã tồn tại trên máy và có thể ở bất kỳ vị trí nào. Thông thường, bạn sẽ tìm thấy Java JDK đã cài đặt/Library/Java/JavaVirtualMachines/. JEnv cho phép thiết lập phiên bản toàn cầu của Java, một phiên bản cho shell hiện tại và phiên bản cục bộ trên mỗi thư mục, tiện dụng khi một số dự án yêu cầu các phiên bản khác với các phiên bản khác.

  1. Cài đặt JEnv nếu bạn chưa có, hướng dẫn trên trang web http://www.jenv.be/ để cài đặt thủ công hoặc sử dụng Homebrew.

  2. Thêm bất kỳ phiên bản Java nào vào JEnv ( điều chỉnh thư mục nếu bạn đặt cái này ở nơi khác ):

    jenv add /Library/Java/JavaVirtualMachines/jdk-13.jdk/Contents/Home
  3. Đặt phiên bản toàn cầu của bạn bằng lệnh này:

    jenv global 13

Bạn cũng có thể thêm các phiên bản hiện có khác bằng cách sử dụng jenv addtương tự và liệt kê những phiên bản có sẵn. Ví dụ: Java 8:

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

Xem tài liệu JEnv để biết thêm các lệnh. Bây giờ bạn có thể chuyển đổi giữa mọi phiên bản Java (Oracle, OpenJDK, khác) bất cứ lúc nào cho toàn bộ hệ thống, cho hệ vỏ hoặc cho mỗi thư mục cục bộ.

Để giúp quản lý JAVA_HOMEtrong khi sử dụng JEnv, bạn có thể thêm plugin xuất để thực hiện việc này cho bạn.

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

Plugin xuất có thể không điều chỉnh JAVA_HOMEnếu nó đã được đặt, vì vậy bạn có thể cần phải xóa biến này trong hồ sơ của mình để JEnv có thể quản lý nó.

Bạn cũng có thể sử dụng jenv exec <command> <parms...>để chạy các lệnh đơn JAVA_HOMEPATHđặt chính xác cho một lệnh đó, có thể bao gồm mở một shell khác.


Cài đặt và chuyển đổi phiên bản với SDKMAN

SDKMAN hơi khác một chút và xử lý cả cài đặt và chuyển đổi. SDKMAN cũng đặt JDK đã cài đặt vào cây thư mục riêng của nó, thường là~/.sdkman/candidates/java. SDKMAN cho phép thiết lập phiên bản mặc định toàn cầu và phiên bản dành riêng cho hệ vỏ hiện tại.

  1. Cài đặt SDKMAN từ https://sdkman.io/install

  2. Liệt kê các phiên bản Java có sẵn để đảm bảo bạn biết ID phiên bản

    sdk list java
  3. Cài đặt một trong những phiên bản đó, ví dụ, Java 13:

    sdk install java 13.0.0-open 
  4. Biến 13 thành phiên bản mặc định:

    sdk default java 13.0.0-open

    Hoặc chuyển sang 13 cho phiên:

    sdk use java 13.0.0-open

Khi bạn liệt kê các phiên bản có sẵn để cài đặt bằng lệnh list, bạn sẽ thấy rất nhiều bản phân phối Java:

sdk list java

Và cài đặt các phiên bản bổ sung, chẳng hạn như JDK 8:

sdk install java 8.0.181-oracle

SDKMAN có thể hoạt động với các phiên bản hiện có được cài đặt trước đó. Chỉ cần thực hiện cài đặt cục bộ cho nhãn phiên bản của riêng bạn và vị trí của JDK:

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

Và sử dụng nó một cách tự do:

sdk use java my-local-13

Thông tin thêm có sẵn trong Hướng dẫn sử dụng SDK cùng với các SDK khác mà nó có thể cài đặt và quản lý.

SDKMAN sẽ tự động quản lý PATHJAVA_HOMEcho bạn khi bạn thay đổi phiên bản.


Cài đặt và chuyển đổi phiên bản với Jabba

Jabba cũng xử lý cả cài đặt và chuyển đổi. Jabba cũng đặt JDK đã cài đặt vào cây thư mục riêng của nó, thường là~/.jabba/jdk.

  1. Cài đặt Jabba bằng cách làm theo các hướng dẫn trên trang chủ .

  2. Danh sách JDK có sẵn

    jabba ls-remote
  3. Cài đặt Java JDK 12

    jabba install openjdk@1.12.0
  4. Sử dụng nó:

    jabba use openjdk@1.12.0

Bạn cũng có thể bí danh tên phiên bản, liên kết đến các JDK hiện có đã được cài đặt và tìm một hỗn hợp các JDK thú vị như GraalVM, Adopt JDK, IBM JDK, v.v. Hướng dẫn sử dụng đầy đủ cũng có sẵn trên trang chủ.

Jabba sẽ tự động quản lý của bạn PATHJAVA_HOMEcho bạn khi bạn thay đổi phiên bản.


2
Để cài đặt thủ công, tôi nghĩ rằng bạn cần phải thiết lập JAVA_HOMEđể chọn một phiên bản cụ thể, giống như export JAVA_HOME=$(/usr/libexec/java_home -v <version>)trong.bash_profile
Peter Hull

@PeterHull một số trình quản lý phiên bản Java không thích JAVA_HOMEthiết lập thủ công và họ tự quản lý nó. JEnv chắc chắn sẽ không điều chỉnh nó nếu được đặt trước đó, không chắc chắn về Jabba và SDKMAN nhưng thông thường họ sẽ quản lý cài đặt đó. Chỉ cài đặt thủ công với chuyển đổi phiên bản KHÔNG nên đặt giá trị này trực tiếp.
Jayson Minard

hoàn toàn đồng ý, sẽ tốt nếu bạn có thể lưu ý rằng trong câu trả lời của bạn là câu hỏi ban đầu được yêu cầu chuyển đổi phiên bản và đặt JAVA_HOME là cách (chỉ?) để thực hiện cho phương pháp cài đặt thủ công.
Peter Hull

2
Java trong thùng bia đã đổi thành OpenJDK 11 ngày hôm qua, ngày 3 tháng 10 năm 2018.
Xingang Huang

16
Có thể là câu trả lời rộng rãi và hữu ích nhất để chạy các JDK khác nhau trên MacOS bao gồm nhiều cách tiếp cận khác nhau, một số cách tôi chưa từng gặp trước đây.
Kevin Hooke

7

Đây là cách tôi đã làm nó.

Bước 1: Cài đặt Java 11

Bạn có thể tải xuống Java 11 dmg cho mac từ đây: https://www.oracle.com/technetwork/java/javase/doads/jdk11-doads-5066655.html

Bước 2: Sau khi cài đặt Java 11. Xác nhận cài đặt tất cả các phiên bản. Nhập lệnh sau trong thiết bị đầu cuối của bạn.

/usr/libexec/java_home -V

Bước 3: Chỉnh sửa .bash_profile

sudo nano ~/.bash_profile

Bước 4: Thêm 11.0.1 làm mặc định. (Thêm dòng dưới đây vào tệp bash_profile).

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

để chuyển sang bất kỳ phiên bản nào

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

Bây giờ Nhấn CTRL + X để thoát bash. Nhấn 'Y' để lưu các thay đổi.

Bước 5: Tải lại bash_profile

source ~/.bash_profile

Bước 6: Xác nhận phiên bản hiện tại của Java

java -version

Giải pháp tốt đẹp. Nhưng nếu vẫn có java -version chỉ đến 8 trong khi tôi đã xuất JAVA_HOME 11 thì sao?
AlexGera

1
Câu hỏi là hỏi về Open JDK, nhưng thay vào đó bạn đã liên kết với JDK của Oracle. Open JDK dường như không có trình cài đặt hoặc hướng dẫn cài đặt.
Splaktar

1
Đáp lại @AlexGera - thêm dòng này: export $ PATH = $ JAVA_HOME / bin: $ PATH
Fuad Efendi

6

Chuyển đổi thủ công phiên bản mặc định của hệ thống mà không có công cụ của bên thứ 3:

Như chi tiết trong câu trả lời cũ hơn này , trên macOS /usr/bin/javalà một công cụ trình bao bọc sẽ sử dụng phiên bản Java được chỉ bởi JAVA_HOMEhoặc nếu biến đó không được đặt sẽ tìm các cài đặt Java bên dưới /Library/Java/JavaVirtualMachines/và sẽ sử dụng phiên bản có phiên bản cao nhất. Nó xác định các phiên bản bằng cách xem xét Contents/Info.plistdưới mỗi gói.

Được trang bị kiến ​​thức này, bạn có thể:

  • kiểm soát phiên bản nào hệ thống sẽ sử dụng bằng cách đổi tên Info.plisttrong các phiên bản bạn không muốn sử dụng làm mặc định (tệp đó không được sử dụng bởi chính thời gian chạy Java thực tế).
  • kiểm soát phiên bản nào sẽ sử dụng cho các tác vụ cụ thể bằng cách cài đặt $JAVA_HOME

Tôi vừa xác minh điều này vẫn đúng với OpenJDK & Mojave.

Trên một hệ thống hoàn toàn mới, không có phiên bản Java nào được cài đặt:

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

Hủy bỏ điều này, tải xuống OpenJDK 11 & 12ea trên https://jdk.java.net ; cài đặt OpenJDK11:

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

Hệ thống java hiện là 11:

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

Cài đặt OpenJDK12 (truy cập sớm tại thời điểm này):

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

Hệ thống java hiện là 12:

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

Bây giờ hãy "ẩn" OpenJDK 12 khỏi trình bao bọc java hệ thống:

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

Hệ thống java đã trở lại 11:

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

Và bạn vẫn có thể sử dụng phiên bản 12 đúng giờ bằng cách cài đặt thủ công JAVA_HOME:

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

1
và điều này cũng đúng với các bản dựng AdoptOpenJDK
Hugues M.

6

Nếu bạn có nhiều phiên bản được cài đặt trên máy của mình, hãy thêm phần sau vào cấu hình bash:

xuất JAVA_HOME_7 = $ (/ usr / libexec / java_home -v1.7)

xuất JAVA_HOME_8 = $ (/ usr / libexec / java_home -v1.8)

xuất JAVA_HOME_9 = $ (/ usr / libexec / java_home -v9)

Và thêm các bí danh sau:

bí danh java7 = 'xuất JAVA_HOME = $ JAVA_HOME_7'

bí danh java8 = 'xuất JAVA_HOME = $ JAVA_HOME_8'

bí danh java9 = 'xuất JAVA_HOME = $ JAVA_HOME_9'

Và có thể chuyển sang phiên bản bắt buộc bằng cách sử dụng bí danh:

Trong thiết bị đầu cuối:

~ >> java7 export JAVA_HOME=$JAVA_7_HOME


vâng, điều này đã được đề cập trong một câu trả lời khác ở đây.
Jayson Minard

3

Một cách khác là sử dụng SDKMAN ! Xem https://wimdeblauwe.wordpress.com/2018/09/26/switching-b between-jdk-8-and-11-USE-sdkman /

Đầu tiên cài đặt SDKMAN: https://sdkman.io/install và sau đó ...

  1. Cài đặt Oracle JDK 8 với: sdk install java 8.0.181-oracle
  2. Cài đặt OpenJDK 11 với: sdk install java 11.0.0-open

Để chuyển đổi:

  • Chuyển sang JDK 8 với sdk use java 8.0.181-oracle
  • Chuyển sang JDK 11 với sdk use java 11.0.0-open

Để đặt mặc định:

  • Mặc định cho JDK 8 với sdk default java 8.0.181-oracle
  • Mặc định cho JDK 11 với sdk default java 11.0.0-open

3

Với Homebrew và jenv:

Giả định: Máy Mac và bạn đã cài đặt homebrew.

Cài đặt thùng:

$ brew tap caskroom/cask
$ brew tap caskroom/versions

Để cài đặt java mới nhất:

$ brew cask install java

Để cài đặt java 8:

$ brew cask install java8

Để cài đặt java 9:

$ brew cask install java9

Nếu bạn muốn cài đặt / quản lý nhiều phiên bản thì bạn có thể sử dụng 'jenv':

Cài đặt và cấu hình jenv:

$ brew install jenv
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(jenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile

Thêm java đã cài đặt vào jenv:

$ jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home
$ jenv add /Library/Java/JavaVirtualMachines/jdk1.11.0_2.jdk/Contents/Home

Để xem tất cả các java đã cài đặt:

$ jenv versions

Lệnh trên sẽ đưa ra danh sách java đã cài đặt:

* system (set by /Users/lyncean/.jenv/version)
1.8
1.8.0.202-ea
oracle64-1.8.0.202-ea

Định cấu hình phiên bản java mà bạn muốn sử dụng:

$ jenv global oracle64-1.6.0.39

1
Error: caskroom/cask was moved. Tap homebrew/cask-cask instead, sau đófatal: repository 'https://github.com/Homebrew/homebrew-cask-cask/' not found
ChumiestBucket

những gì @ChumiestBucket đã nói - giải pháp này có nhiều vấn đề
javadba

1

IMHO, Không cần phải cài đặt tất cả các ứng dụng / gói bổ sung.

Kiểm tra các phiên bản có sẵn bằng lệnh:

> /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

Bây giờ nếu bạn muốn chọn Azul JDK 8 trong danh sách trên và KHÔNG phải Java SE 8 của Oracle, hãy gọi lệnh như dưới đây:

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

Để chọn Java SE 8 của Oracle, bạn sẽ gọi lệnh:

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

Như bạn có thể thấy số phiên bản được cung cấp sẽ là bộ chuỗi duy nhất: 1.8.0_181 so với 1.8.0_151


Không phải ví dụ đầu tiên có chuỗi phiên bản 1.8.0_181-zulu-8.31.0.1? hoặc là một phần phù hợp?
Jayson Minard

Điều này thực sự không thay đổi bất cứ điều gì để sử dụng phiên bản Java, nó chỉ báo cáo vị trí của JAVA_HOME. Chuyển đổi thủ công bằng cách sử dụng các lệnh này được đề cập trong câu trả lời khác của tôi.
Jayson Minard
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.