Chuyển đổi giữa Java 7 và 8 trong OS X


25

Tôi đã cài đặt Java-8. Bây giờ tôi muốn quay lại Java-7 theo mặc định vì vậy tôi nhập vào ...

/usr/libexec/java_home -v 1.7.0_40 --exec java -version
/usr/libexec/java_home -v 1.7.0_40 --exec javac -version

Nhưng tôi vẫn thấy ...

java -version
java version "1.8.0-ea"
Java(TM) SE Runtime Environment (build 1.8.0-ea-b108)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b50, mixed mode)

Điều này không hoạt động ...

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home

Nhưng tôi muốn một giải pháp lâu dài hơn.

Bất cứ ai nhìn thấy những gì tôi đang làm sai?

Câu trả lời:


50

Dễ dàng chuyển đổi phiên bản

  1. Cài đặt các phiên bản 1.6, 1.7, 1.8 theo bất kỳ thứ tự nào. Lưu ý: Tôi tin rằng cái cuối cùng được cài đặt sẽ xác định cái nào sẽ được sử dụng cho plugin trình duyệt, tôi sẽ không quan tâm đến việc thay đổi những cái bên dưới.

  2. Sau đó, thêm vào ~/.bashrchoặc ~/.bash_profile, hoặc bất cứ nơi nào:

    #!/bin/bash
    export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)
    
    setjdk() {
       export JAVA_HOME=$(/usr/libexec/java_home -v $1)
    }
    
  3. Xác nhận thay đổi qua java -version

    $ java -version
    java version "1.7.0_51"
    Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
    Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
    
    $ setjdk 1.6
    $ java -version
    java version "1.6.0_65"
    Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
    Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)
    
    $ setjdk 1.8
    $ java -version
    java version "1.8.0"
    Java(TM) SE Runtime Environment (build 1.8.0-b132)
    Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
    

Rõ ràng sự thay đổi chỉ trong thời gian của vỏ. Nhưng bạn có thể thấy nơi bạn có thể đặt nó trên toàn cầu ngay bây giờ.


2
Một vấn đề: JDK7 từ chối cài đặt nếu bạn đã có JDK8. Nó trỏ bạn đến một URL trên oracle.com để biết thêm thông tin cung cấp cho bạn 404. Và tất nhiên, các hướng dẫn gỡ cài đặt cho JDK8 hoàn toàn không hoạt động, vì vậy hiện tại tôi đã bị mất.
Eric W

1
chỉ cần sử dụng jenv jenv.be
madzohan 11/03/2015

9

Bạn có thể sử dụng jEnv ( http://www.jenv.be/ ), đây là "công cụ dòng lệnh để giúp bạn quên cách đặt biến môi trường JAVA_HOME để chuyển đổi giữa các phiên bản khác nhau của JDK" (lấy từ trang chủ của dự án ).

Nếu bạn quen thuộc với Ruby, JEnv giống như sử dụng RVM hoặc rbenv. Nó giúp bạn xử lý một số JDK khác nhau được cài đặt trên máy của bạn mà không phải viết tập lệnh của riêng bạn để chuyển từ JDK này sang JDK khác. Bạn có thể thay đổi phiên bản java hiện tại dựa trên thư mục hiện tại hoặc dựa trên tệp cấu hình.


Bạn có thể mở rộng về điều này? Điều này trông giống như một bình luận, không phải là một câu trả lời.
Austin T Pháp

Nếu bạn quen thuộc với Ruby thì giống như sử dụng RVM hoặc rbenv để thay đổi phiên bản java hiện tại dựa trên thư mục hiện tại hoặc dựa trên tệp cấu hình. Nếu bạn vào trang chủ của JENV, có một hướng dẫn tốt.
Pietro Di Bello

Bài đăng này nên dành cho tất cả những người đang tìm kiếm câu trả lời, vì vậy chi tiết hơn trong bài viết dự kiến ​​ở đây sẽ được coi là một câu trả lời đầy đủ và tốt.
Austin T Pháp

Tôi đã thêm thông tin và mở rộng một chút câu trả lời ... hy vọng điều này có vẻ tốt hơn bây giờ. Cảm ơn vì bạn đã phản hồi.
Pietro Di Bello

4

Bạn không thể chuyển đổi giữa các phiên bản Java. Trong Tài liệu bạn thấy:

Mỗi lần chỉ có thể cài đặt một JRE. Hệ thống sẽ không cài đặt JRE có phiên bản thấp hơn phiên bản hiện tại. Nếu bạn muốn cài đặt phiên bản JRE thấp hơn, trước tiên hãy gỡ cài đặt phiên bản hiện tại.

Nếu bạn muốn quay lại phiên bản cũ hơn, bạn phải gỡ cài đặt Java 8.


Cảm ơn rất nhiều nhưng điều này không giúp ích gì cho ý kiến ​​của tôi về OSX.
Jackie

4
@Jackie: Thật ra điều này ít liên quan đến OS X nhưng nhiều hơn với Oracle. Quay lại khi Apple duy trì JDK cho OS X, việc chuyển đổi giữa các phiên bản Java đang hoạt động là hoàn hảo và dễ dàng. Xin hãy đổ lỗi cho Oracle vì trình cài đặt tào lao của họ chứ không phải OS X.
Alessandro Vermeulen

@AlessandroVermeulen với tất cả sự tôn trọng, đó không phải là "trình cài đặt", tôi ước nó không đi kèm với một phiên bản được cài đặt sẵn như các hộp linux của tôi. Sau đó, tôi có thể "cài đặt" nó bằng mọi cách tôi muốn với tệp nhị phân unix. Và sau đó là các phiên bản cũ hơn của OSX, nơi nó thậm chí còn được yêu cầu khởi động. IMHO nó hoàn toàn là các quy ước được sử dụng trong OSX gây ra vấn đề.
Jackie

4
Có nhiều JDK được cài đặt chính xác trên máy của tôi, đó là plugin tùy chọn của Oracles không cho phép chuyển đổi từ 1.8 sang 1.7, từ dòng lệnh với một đường dẫn đầy đủ tất cả đều hoạt động thành công. / usr / libexec / java_home -V liệt kê tất cả - và ngăn tùy chọn Java 7 cho phép lựa chọn JRE Java 7
user151019 17/214

0

Tôi muốn bổ sung câu trả lời của @ nkadwa. Đề xuất của anh ấy đã có hiệu quả, nhưng chỉ sau khi cũng thay đổi liên kết tượng trưng cho CurrentSDK. Vì vậy, đây là mã sửa đổi:

setjdk() {
    export JAVA_HOME=$(/usr/libexec/java_home -v $1)
    sudo ln -nsf ${JAVA_HOME%/*} /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
}
setjdk 1.8
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.