Đã cài đặt Java 7 trên Mac OS X nhưng Terminal vẫn đang sử dụng phiên bản 6


391

Tôi đã cài đặt JDK 7u7 được tải xuống từ trang web của oracle. Nhưng sau khi cài đặt, thiết bị đầu cuối vẫn hiển thị java phiên bản 6

$java -version
java version "1.6.0_35"
Java(TM) SE Runtime Environment (build 1.6.0_35-b10-428-11M3811)
Java HotSpot(TM) 64-Bit Server VM (build 20.10-b01-428, mixed mode)

Bất cứ ý tưởng tại sao java 7 không hiển thị?

Trả lời: OK, vấn đề đã được giải quyết. Đây là câu trả lời: Tôi thấy rằng Terminal của tôi có .bash_profile và biến nhà java được đặt thành 1.6

export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home"

Vì vậy, đây là dòng gây ra vấn đề mỗi khi tôi mở một cửa sổ thiết bị đầu cuối mới. Đơn giản chỉ cần loại bỏ dòng này sẽ giải quyết vấn đề. Bạn vẫn cần phải làm theo những gì @aleroot đã nói, nhưng nếu điều đó không phù hợp với bạn, hãy kiểm tra tệp cài đặt .bash_profile (hoặc .bashrc) để xem bạn đã xuất bất kỳ phiên bản java nào trước đây chưa.


23
Tôi đã có vấn đề này nhưng tôi chỉ cập nhật JRE chứ không phải JDK. Khi tôi cập nhật JDK, nó hiển thị phiên bản chính xác.
Paul Maserrat

Di chuyển này để hỏi khác nhau?
Nakilon

14
Chỉ cần thu hút thêm sự chú ý vào nhận xét của @ Mazzy, đó là một sai lầm dễ mắc phải. Tải xuống JRE v7 sẽ khiến phiên bản 7 xuất hiện khi chạy trình kiểm tra phiên bản trực tuyến hoặc bảng điều khiển Java, nhưng khi gọi Java từ dòng lệnh, bạn sẽ chạy phiên bản cũ hơn từ JDK đã cài đặt trước đó. Vì vậy, hãy kiểm tra kỹ để đảm bảo bạn đã cài đặt JDK chứ không chỉ JRE.
Cam Jackson

1
Cách tốt nhất để giải quyết điều này là sử dụng export JAVA_HOMEcách tiếp cận, như chi tiết ở đây một cách linh hoạt hơn một chút.
Brad

5
Hãy để tôi nhấn mạnh điều này bằng chữ in hoa: NHIỀU NGƯỜI ĐẤT ĐẾN TRANG NÀY SILL CHỈ CẦN TẢI XUỐNG VÀ CÀI ĐẶT JDK MỚI NHẤT. BẢNG ĐIỀU KHIỂN JAVA CHỈ CẬP NHẬT JRE.
Walter Tross

Câu trả lời:


64

Bởi vì bạn cần nhập vào ngăn Tùy chọn Java và chỉ gắn cờ JVM 7 theo cách này:

Tùy chọn Java

Để dễ dàng và nhanh chóng mở ngăn Tùy chọn Java trong Mac OS X, bạn chỉ cần gọi spotlight bằng +SPACE và nhập System Preferences, nó sẽ hiển thị ở hàng cuối cùng của cửa sổ.


3
vâng, tìm thấy nó nhưng vẫn là phiên bản 1.6 trong thiết bị đầu cuối, tôi có cần khởi động lại hay không
Yang

1
Bảng này không còn tồn tại trong 10.8. Lựa chọn thay thế?
Pepijn

68
@Pepijn Panale là lịch sử kể từ Mac OSX 10.8.2 và thực sự không cần nó nữa. Thay vào đó, bạn phải sử dụng export JAVA_HOME=`/usr/libexec/java_home -v 1.7`để chuyển sang JDK Java 7 mới nhất từ ​​Oracle.
Uwe Günther

23
Tôi nghĩ rằng họ đã thoát khỏi Tùy chọn Java tại một số điểm. Nó không được tìm thấy bởi Spotlight trên hộp của tôi. Chạy 10.8.5.
quickshiftin

1
Bạn có thể tìm vị trí chính xác của JAVA_HOME trong -> tùy chọn hệ thống -> java. Nhấp vào tab "Java". Nhấn vào xem. Biến Đường dẫn hiển thị JAVA_HOME (ô vuông / Trang chủ) của bạn.
agaase

298

Trình cài đặt của Oracle đặt java bên trong /Library/Internet Plug-Ins/JavaAppletPlugin.plugin. Và nó không ghi đè lên /usr/bin/java. Vì vậy, nếu bạn phát hành một

whereis java

trong terminal, nó sẽ trả về / usr / bin / java. (lần lượt chỉ vào/System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java , đó là phiên bản 1.6 của Apple).

Vì vậy, nếu bạn muốn sử dụng phiên bản java mới, hãy thay thế /usr/bin/javasymlink để /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/javathay vào đó:

sudo rm /usr/bin/java
sudo ln -s /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java /usr/bin

22
Đây là lệnh: sudo ln -s / Library / Internet \ Plug-Ins / JavaAppletPlugin.plugin / Nội dung / Trang chủ / bin / java / usr / bin
Binary

11
Lệnh của Viktor hoạt động. Nhưng bạn cũng có thể cần chắc chắn rằng mình đã xóa liên kết java hiện córm /usr/bin/java
Matt Florence

7
Cho đến khi Oracle folks cải thiện quy trình này, đây là một CÁCH của toàn bộ quá trình cài đặt java trên hệ thống osx, cho đến khi và bao gồm cả bước liên kết cuối cùng này: gist.github.com/johan/10590467
ecmanaut

61
tôi đã nhậnrm: /usr/bin/java: Operation not permitted
Aditya

37
Hoặcexport PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"
Mick

114

Cài đặt JDK 7 và vấn đề này sẽ tự giải quyết.

Hãy chắc chắn lấy Bộ công cụ phát triển Java (JDK) bao gồm các trình biên dịch và những thứ tương tự, thay vì chỉ Môi trường chạy thi hành Java (JRE).


7
cài đặt JDK đầy đủ, không chỉ JRE.
BrainO2

5
-1 Nó không giúp được gì. Lắp đặt JDK không thay đổi /usr/bin/javacũng không JAVA_HOME. Nhưng thiết lập JAVA_HOMEgiúp đỡ.
Andrii Nemchenko

3
Xác nhận OK trên OSX 10.9.4. Nó không thay đổi liên kết / usr / bin, nó thay đổi công cụ bên dưới nó. Vì vậy /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java # But: /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java -version java version "1.7.0_67"
Joe Atzberger

1
Cũng hoạt động cho JDK 1.8 - (cài đặt JDK 1.8 thay vì JRE 1.8)
Mark Chackerian

Tôi đã cố gắng cài đặt Java 1.8, nhưng nó không hoạt động trên El Capitan. Cài đặt 1.7 đã giải quyết vấn đề của tôi.
XUÂN

104

vi ~/.bash_profile

thêm vào

export JAVA_HOME=`/usr/libexec/java_home -v 1.7`

Điều này cho biết /usr/bin/javamục tiêu liên kết của bạn để sử dụng Gói Java 7 mới nhất được cài đặt trong

/Library/Java/JavaVirtualMachines/

Vì vậy, đối với JDK 1.7.0_17 JAVA_HOMEsẽ là:

/Library/Java/JavaVirtualMachines/jdk1.7.0_17.jdk/Contents/Home

Lưu ý: Gần đây có rất nhiều thay đổi trong lĩnh vực này để chuyển Mac OS X từ các gói Java tích hợp hệ thống của Appels sang Gói Java dựa trên Oracle. Giải pháp trên đang hoạt động tốt kể từ Mac OS X 10.8.2


4
+1 cho câu trả lời này là câu trả lời đúng vì nó hoạt động trên các phiên bản Mac OS trước và sau 'Tùy chọn Java' đã bị xóa và bằng cách hiển thị tùy chọn "-v", nó cho thấy cách bạn có thể sử dụng java 6 ngay cả khi java 7 được cài đặt (đó là những gì tôi muốn). Do đó, trên Mac của tôi đang chạy Lion (10.7.5), tôi sử dụng cùng một lệnh với "-v 1.6". Điều này rất quan trọng vì tôi cần Java 6 và Oracle không cung cấp một cái cho Mac OS - chỉ Java 7 và điều này cho phép tôi sử dụng JAva 6 đã cài đặt ngay cả khi Java 7 đã được cài đặt.
hoàng

1
Ngoài ra, để làm cho nó linh hoạt hơn: mikemainguy.blogspot.com/2014/11/ trên
Mainguy

thông tin bổ sung có thể được tìm thấy ở đây cho câu trả lời tuyệt vời này!
Công viên Brad

Điều này làm việc cho tôi ở Sierra 10.12 sau khi cài đặt 1.8 JKD, xuất khẩu hoạt động bằng cách thay đổi 1.7 thành 1.8. Câu trả lời tuyệt vời bằng tiện ích java_home !!
Scott Byers

56

Trong trường hợp của tôi, vấn đề là Oracle đã cài đặt nó đến một vị trí khác với nơi tôi đã từng sử dụng.

Tải xuống từ Oracle: http://java.com/en/doad/mac_doad.jsp?locale=en

  1. Xác minh rằng nó được cài đặt đúng bằng cách tìm trong System Prefs:

    • Command-Space để mở Spotlight, nhập 'System Preferences', nhấn enter.
    • Nhấp vào biểu tượng Java ở hàng dưới cùng. Sau khi Bảng điều khiển Java mở ra, hãy nhấp vào tab 'Java', 'Xem ...' và xác minh rằng cài đặt của bạn đã hoạt động. Bạn cũng có thể thấy một 'Đường dẫn', bạn có thể thêm vào các lệnh bên dưới trong trường hợp chúng khác với của tôi.
  2. Xác minh rằng phiên bản như bạn mong đợi (phụ trong đường dẫn của bạn khi cần):

    / Thư viện / Internet \ Plug-Ins / JavaAppletPlugin.plugin / Nội dung / Trang chủ / bin / java -version

  3. Tạo liên kết từ / usr / bin / java để cài đặt mới của bạn

    sudo ln -fs / Thư viện / Internet \ Plug-Ins / JavaAppletPlugin.plugin / Nội dung / Trang chủ / bin / java / usr / bin / java

  4. Sanity kiểm tra phiên bản của bạn:

    chuyển đổi java


Làm việc cho tôi cũng vậy, tôi cũng đã thử giải thích khác nhưng với Maverix không có bảng điều khiển nơi bạn có thể chọn số phiên bản và cũng thay đổi .bash_profile không hoạt động. HOÀN HẢO!
Alex Cio

Eclipse không nhìn thấy 1.7 dưới trình biên dịch
Laser Hawk

Đã làm cho tôi!. Before = 1.6.0_65 và Sau khi sử dụng giải pháp này = 1.7.0_60 .... cảm ơn! :)
toán

nhưng nhật thực gây ra lỗi như vẫn 'thư viện chia sẻ jvm không chứa biểu tượng jni_createjavavm' .... :(
toán học

1
Cảm ơn đã giúp đỡ! Không có gì khác làm việc ngoại trừ điều này. Chạy Yosemite
LordZardeck

33

Tôi đã gặp phải một vấn đề tương tự với thiết bị đầu cuối không cập nhật phiên bản java để phù hợp với phiên bản được cài đặt trên mac.

Không có vấn đề với biến môi trường JAVA_HOME được đặt

Tôi đã đưa ra một giải pháp tạm thời và hơi đau đớn nhưng làm việc.

Trong bạn .bash_profile thêm dòng:

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

(Đây là đường dẫn trên máy của tôi nhưng có thể khác với máy của bạn, hãy đảm bảo lấy đường dẫn của bạn. Đường dẫn phải khớp với / Library / Java / JavaVirtualMachines /)

chạy source ~/.bash_profile

Như tôi đã đề cập, đây là một giải pháp hỗ trợ băng tần tạm thời vì đường dẫn nhà java đang được mã hóa cứng. Thực sự không có cách nào để thiết lập đường dẫn để có bản mới nhất vì đó là những gì Apple được cho là đã làm cho thiết bị đầu cuối và vấn đề là biến môi trường java_home của Apple không được cập nhật.


4
Thư mục trống. $ ls / Thư viện / Java / JavaVirtualMachines /
Pepijn

1
Bạn có thể có một vấn đề với nơi bạn đã cài đặt java 7. Vui lòng truy cập trang web của oracle . Nhấp vào liên kết "Java SE Development Kit 7u11", chấp nhận thỏa thuận cấp phép và tải xuống "jdk-7u11-macosx-x64.dmg". Sử dụng dmg để cài đặt Java 7 và điều này sẽ đặt nó trong thư mục JavaVirtualMachines của bạn.
Derek

Đây là một giải pháp trên Mojave 10.14.1 vào đầu năm 2019
bitsand 7/2/19

27

Kể từ El Capitan, rất khó để xóa /usr/bin/javasymlink, vì sự ra đời của chính sách "không gốc" mới.

Do đó, tôi chỉ cần thêm đường dẫn đến phiên bản java mới nhất (trong trường hợp của tôi là /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin) PATHvào .bashrctệp của tôi :

# Use latest java version
export PATH=/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH

Để tải lại .bashrctệp của bạn cho phiên hiện tại, hãy chạy source ~/.bashrctrong trình bao. Bạn chỉ phải làm điều này cho các phiên đã được bắt đầu trước khi thay đổi.bashrc tệp.

Bây giờ phiên bản mới nhất được sử dụng, khi bạn sử dụng javatrong trình bao.


1
Giải pháp đặc biệt này đã làm việc cho tôi trên mac os x el capitan của tôi. Tôi đã không bỏ qua bảo mật được thiết lập trên el capitan, nhưng đã cài đặt phiên bản java 1.8. Thực hiện xuất JAVA_HOME = / đường dẫn cụ thể của tôi, v.v. / không hoạt động (sau khi đi đến tùy chọn và định vị đường dẫn đến 1.8). Xin lưu ý 1.6 vẫn được cài đặt. Tôi đã phải tạo một tệp .bashrc và đặt đường dẫn như được mô tả ở đây. Tôi đã chạy java -version và shazzam! nó đã làm việc.
umbregachoong

Tôi rất muốn điều này hoạt động khi tôi ở El Capitan và không thể có bất kỳ giải pháp nào khác để hoạt động. Tôi đã tạo một tệp '.bashrc' và thêm dòng như trên, nhưng nếu tôi gõ 'java -version', tôi vẫn nhận được 1.6. Bất cứ điều gì tôi có thể đã bỏ qua?
noLongerRandom

@ user3810073 có thể bạn cần chạy source .bashrc, để tải lại nội dung của .bashrc
TabeaKischka

Đã làm cho tôi. Tôi đã thêm dòng vào .bash_profile (trong thư mục chính của người dùng của tôi), sau đó nguồn .bash_profile. Sau đó, java -version đã cho tôi bản mới nhất. Cảm ơn!
mrmuggles

Điều này cũng có thể đạt được bằng cách liên kết tượng trưng để /usr/local/binthích điều này: sudo ln -sf "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java" /usr/local/bin/java Giả sử /usr/local/binlà trước đó /usr/bintrong bạn $PATHnên theo mặc định.
lifeofguenter

21

Đối với tôi cách dễ nhất và dễ nhất là cài đặt Java bằng cách sử dụng homebrew như được mô tả ở đây:

https://stackoverflow.com/a/28635465

brew update
brew cask install java

Giải pháp đơn giản và sạch sẽ!. Làm việc như người ở.
Rahul Shukla

2
Đây là giải pháp duy nhất cập nhật cả java và javac. Cảm ơn!
ldanilek

Làm việc như say mê :) Cảm ơn rất nhiều
Mohamed Saleh

điều này sẽ cài đặt phiên bản mới nhất của java, không phải Java7
Ivo

13

Vấn đề cơ bản: /usr/bin/javalà chỉ đến một vấn đề do chính OSX cung cấp ban đầu ( /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java) Chúng ta cần chỉ vấn đề này đến trình tải xuống được trình cài đặt JDK tải xuống. Các bước dưới đây dành cho OSX 10.10.4 Yosemite.

  • Mở tùy chọn hệ thống -> chọn Java. Cửa sổ Java mở ra.
  • Nhấp vào tab Java ở trên cùng. Nhấp vào nút 'Xem'.
  • Tab Cài đặt môi trường thời gian chạy Java mở ra như dưới đây: Tab Cài đặt JRE
  • Nhấp đúp chuột vào Path mục và sao chép đường dẫn (cmd + c). Đây là cái mới nhất được cài đặt bởi trình cài đặt / cập nhật JDK. Trong trường hợp của tôi, đường dẫn là/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java
  • Mở thiết bị đầu cuối. Trong bước này, chúng ta sẽ trỏ (liên kết tượng trưng, ln -slệnh) hệ thống nhị phân java đến hệ thống mới nhất, mà chúng ta đã phát hiện ra trong bước trước. Chạy lệnh dưới đây:

sudo ln -s /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java /usr/bin/java

Đó là nó. Để xác minh, bạn chỉ có thể chạy java -version trên thiết bị đầu cuối. Nó sẽ xuất phiên bản mới nhất mà bạn đã cài đặt / cập nhật.


2
Làm việc cho tôi, ngoại trừ việc tôi phải thêm lệnh -f vào ln. Mặt khác, nếu thất bại với ln: / usr / bin / java: Tệp tồn tại
Dale

trong trường hợp của tôi, tôi sẽ sử dụng usr/local/binthay vì usr/bintrong lệnh thiết bị đầu cuối
iAkshay

Tôi nhận được "hoạt động không được phép".
Shardul

Có được con đường theo cách này là lý tưởng. Sau đó tôi đã có thể xuất nó và tải lại bashrc để giải quyết vấn đề phiên bản. Trong trường hợp của tôi, tôi đã chuyển từ phiên bản 7 sang 8 trên Mojave 10.14.1
bitsand 7/2/19

12

Bạn có thể thực hiện lệnh sau trong thiết bị đầu cuối của bạn:

export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"

Và điều này thay thế java cũ bằng cái mới.


1
Thật kỳ lạ, nó thay thế nhưng sau đó nếu tôi đóng thiết bị đầu cuối và mở lại, nó lại hiển thị phiên bản cũ hơn
Parth Patel

đúng. thật điên rồ giải pháp rất tạm thời
Một người dùng

1
thêm tệp đó source ~/.bashrcvào tệp .bashrc sau đó để làm cho tệp vĩnh viễn
Azimjon Ilkhomov

10

tôi đã làm

export JAVA_HOME=`/usr/libexec/java_home`

và nó đã sửa vấn đề Java 8 của tôi.

trước:

java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)

sau:

java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)

1
Đây /usr/libexec/java_homelà một dấu hiệu rất tốt, cảm ơn!
Raffi

1
Đã làm công việc cho tôi sau khi đọc hàng tấn các giải pháp có thể! Cảm ơn :)
ronnyrr

7

http://www.java.com/en/doad/faq/java_mac.xml là một nơi tuyệt vời để hiểu, trong khi Apple đang ngừng hỗ trợ cho Java, tại sao Tùy chọn Java không còn tồn tại nữa và dựa vào System_Preferences => Java = > Java nếu Java 7 từ Oracle được cài đặt.


2
Đây là thông tin tốt, nhưng bạn thực sự nên cung cấp nhiều chi tiết hơn chỉ là một liên kết. Nếu liên kết bị hỏng trong tương lai, câu trả lời của bạn thực sự sẽ không hữu ích.
psubsee2003

7

Tôi có thể đề nghị bạn xem công cụ Jenv không

Điều này sẽ cho phép bạn chuyển đổi bất cứ lúc nào giữa các JVM đã cài đặt của bạn.

Đơn giản là:

jenv global oracle-1.7

sau đó cho mục đích thử nghiệm:

jenv global oracle-1.6

Và bạn có nhiều lệnh hơn có sẵn.


+1 cho câu trả lời này vì bạn có thể sử dụng Homebrew, nếu bạn đang sử dụng nó trong hệ thống OS X của bạn. Sạch sẽ hơn nhiều so với những người khác tôi nói. Thêm thông tin ở đây: jenv.be
piku

6

Mã hóa cứng đường dẫn JAVA_HOME có thể không phải là ý tưởng tốt nhất. Các /usr/libexec/java_homesill tiện ích làm việc cho tôi trên Mac OSX Lion 10.7.5 và JDK 1.7.0_13. Theo trang man của nó, nó được sử dụng với khung Tùy chọn Java cũ của Apple, nhưng dường như nó đang hoạt động với sự thay thế do Oracle (Bảng điều khiển Java) cung cấp. Ví dụ: chạy/usr/libexec/java_home -V danh sách tất cả các JDK đã cài đặt (cả 1.6. * Và 1.7. *) Trên máy của tôi.

Vì vậy, như đã thảo luận trong các chủ đề khác (ví dụ: Tôi nên đặt JAVA_HOME thành gì trên OSX ), tôi vẫn sẽ khuyên bạn nên thêm dòng sau vào .bash_profile của bạn:

export JAVA_HOME=$(/usr/libexec/java_home)

Tôi đồng ý với nhận xét của bạn ở đây, vì đó là cách thực hành tốt nhất, nhưng vì một số lý do, biến môi trường java_home không được đặt chính xác, đó là lý do tại sao điều này không hoạt động. Tôi tin vào bản cập nhật mới nhất của Apple, đề xuất của bạn là hành động mặc định cho JAVA_HOME trong thiết bị đầu cuối và các ứng dụng liên quan khác theo mặc định.
Derek

@Derek Bạn có ý nghĩa chính xác gì về "biến môi trường java_home không được đặt chính xác"? Theo bài viết này , /usr/libexec/java_hometiện ích này có nghĩa là cũng hoạt động với các phiên bản java 7 và nó trả về đường dẫn đến JDK cập nhật nhất được cài đặt. Nó hoạt động hoàn hảo trên máy của tôi.
zagyi

1
vâng, nó được cho là hoạt động tuy nhiên nó không dành cho những người có vấn đề mà pepijin đã đề cập.
Derek

6

Đây là hạt dẻ! Làm thế nào để Oracle cung cấp một trình cài đặt không cài đặt bất cứ thứ gì!?

Dù sao đối với tôi đó là:

sudo rm /usr/bin/java
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/jre/bin/java /usr/bin/java

trong đó 1.8.0_31 là phiên bản java đã cài đặt của bạn ...


Tại sao Apple không cung cấp một phương pháp thích hợp?
jwilleke

6

Trong trường hợp nếu bạn có một số phiên bản Java trên máy của mình và bạn muốn chọn nó một cách linh hoạt khi chạy, tức là trong trường hợp của tôi, tôi có hai phiên bản:

ls -la /Library/Java/JavaVirtualMachines
drwxr-xr-x  3 root  wheel    96B Nov 16  2014 jdk1.7.0_71.jdk/
drwxr-xr-x  3 root  wheel    96B Mar  1  2015 jdk1.8.0_31.jdk/

Bạn có thể thay đổi chúng bằng cách sửa đổi nội dung / etc / profile. Chỉ cần thêm (hoặc sửa đổi) hai dòng sau vào cuối tệp:

export JAVA_HOME=YOUR_JAVA_PATH/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

Trong trường hợp của tôi, nó sẽ giống như sau nếu tôi muốn sử dụng:

Java 7:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

Java 8:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

Sau khi lưu tệp, vui lòng chạy source /etc/profile và nó sẽ hoạt động. Đây là kết quả khi tôi sử dụng tùy chọn thứ nhất và thứ hai phù hợp:

Java 7:

java -version
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)

Java 8:

java -version 
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)

Quá trình này tương tự nếu thư mục java của bạn được đặt ở các vị trí khác nhau.


5

Giải pháp đơn giản

export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"

Tuyệt vời. Giải pháp này làm cho ngày của tôi. Cảm ơn rất nhiều Mick
Một người dùng

3

Tôi nghĩ bạn có thể thử cài đặt jdk chứ không phải jre. Bằng cách cài đặt jdk, java trong / usr / bin / java sẽ được thay thế và tất cả thư viện sẽ hoạt động tốt.


3

Nếu bạn đã cài đặt Homebrew, bạn có thể cài đặt trình chuyển đổi java để thay đổi phiên bản mặc định của Java nhanh hơn

brew tap andycillin/tap
brew install java-switcher

Sau đó, bạn có thể sử dụng chỉ một lệnh để chuyển đổi phiên bản Java mặc định của mình.

java-switcher 1.7

hoặc là

java-switcher 10

Cảm ơn Andy, điều này thật dễ dàng.
GreenROBO

1

Bạn có thể chạy lệnh này để tìm phiên bản Java có trong / Thư viện / Trình cắm Internet /:

defaults read /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Info.plist CFBundleVersion

1

Nó đang xảy ra vì .bash_profile của bạn không phản ánh các thay đổi. Để phản ánh nó, chỉ cần sử dụng lệnh sau

$ source .bash_profile

0

Vì tôi không phải đối mặt với vấn đề này, tôi đang linh cảm -

Bạn có thể vui lòng thử cái này không:

Trường hợp liên kết mềm "java_home" trỏ đến:

ls -lrt /usr/libexec/java_home

Đầu ra: (Stunted) lrwxr-xr-x java_home -> / System / L Library / Frameworks / JavaVM.framework / Warions / Cản / Commands / java_home

** ls -lrt / System / L Library / Frameworks / JavaVM.framework / Versions My MAC Sản xuất như sau:

 lrwxr-xr-x CurrentJDK ->
 /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents**

 lrwxr-xr-x   Current -> A
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.6.0 -> CurrentJDK
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.6 -> CurrentJDK
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.5.0 -> CurrentJDK
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.5 -> CurrentJDK
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.4.2 -> CurrentJDK
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.4 -> CurrentJDK

Dựa trên điều này, chúng ta có thể có được một gợi ý để tiến xa hơn?


đọc một số bình luận trên Internet về các vấn đề Java 7 với MAC-OSX và nó cho thấy bị chặn . Xác nhận điều này: grep.dk/tag/xprotect-meta-plist . Trong XProtect.meta.plist tôi có Java 7 và Flash được liệt kê.Until đang chơi Cảnh sát dễ bị tổn thương
user1428716

0

Tôi đã giải quyết vấn đề này bằng cách cài đặt lại Yosemite và sau đó kiểm tra chéo phiên bản java trên thiết bị đầu cuối (java -version) và (javac -version). Nó hoạt động hoàn hảo ngay bây giờ. Nó không thay đổi thành java 7 như phiên bản 6 vẫn còn trên (lệnh + n ) libray> java> javavirtualmachine> phiên bản hiện tại javac của bạn. Bạn cần gửi địa chỉ đến nhà java.


0

Tôi đã giải quyết vấn đề này với sudo rm /usr/bin/java

Và tôi đã tải xuống và cài đặt Môi trường thời gian chạy Java SE cuối cùng: http://www.oracle.com/technetwork/java/javase/doads/index.html

sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/jre/bin/java /usr/bin/javađã không làm việc cho tôi bởi vì tôi đã nhận Operation not permitted. El Capitan hiện bảo vệ một số thư mục hệ thống nhất định ở chế độ "rootless" (còn gọi là Bảo vệ toàn vẹn hệ thống). Nó được áp dụng cho macOS Sierra và có thể là các phiên bản macOS mới trong tương lai gần.


0

Cài đặt thông qua JDK DMG phân tán từ trang web Oracle tự động cập nhật mọi thứ cho tôi. Tôi đã thấy (trong El Capitan) cập nhật thông qua các System Preferences > Javabản cập nhật nhưng điều đó không phản ánh đến dòng lệnh. Cài đặt thông qua DMG thực hiện công việc.


0

Kiểm tra các phiên bản JDK được cài đặt:

$ ls  /Library/Java/JavaVirtualMachines/
jdk-11.0.2.jdk  jdk1.8.0_91.jdk

Bây giờ trong ~/.bashrcxuất của bạn JAVA_HOMEchỉ định phiên bản:

if [ -e /usr/libexec/java_home ]; then
  export JAVA_HOME=$(/usr/libexec/java_home -v 11)
fi

Nguồn tệp bashrc và phiên bản Java sẽ được cập nhật:

$ java -version
java version "11.0.2" 2019-01-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode)

0

Phương pháp hiệu quả mới nhất 100%:


trong bash:

vim ~/.bash_profile

thêm vào

export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"
  • :wq để tiết kiệm
  • cmd + q lực bỏ bash
  • mở bash lần nữa và gõ vào java -version

Nhưng thực sự con đường này chỉ đến jre không jdk.

Nếu bạn muốn trỏ đường dẫn đến JDK, bạn cần

  1. Hãy chắc chắn rằng bạn đã cài đặt JDK không phải là thời gian chạy JRE duy nhất
  2. thay thế đường dẫn trước đó PATH="/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk", bạn có thể đi đến /Library/Java/JavaVirtualMachinesđể đảm bảo rằng bạn đã cài đặt phiên bản JDK mà bạn mong đợi.
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.