Mountain Lion chỉ với Java 7


39

Tôi đã thực hiện cài đặt sạch Mountain Lion và cài đặt JDK7.

java -versiontrong Terminal trả về java version "1.7.0_05"chính xác, các tùy chọn Java và một số chương trình Java khác (như Eclipse) dẫn đến các lời nhắc để cài đặt Java SE 6.

Tôi có thể khởi động Eclipse một cách hoàn hảo từ dòng lệnh với Java 7.

Có cách nào để làm việc này mà không phải cài đặt Java 6 không?


1
Điều này thực sự gây rối. Tại sao trên trái đất này vẫn chưa được cố định? Không phải bảo mật tăng lên là động lực chính cho lý do tại sao Apple từ bỏ quyền kiểm soát quy trình cập nhật Java? Tại sao OSX vẫn nhắc tôi cài đặt một Java lỗi thời? Rất tiếc!
gentmatt

@gentmatt Java 7 không phải là một bản cập nhật đơn giản cho Java 6 - nó giống như thay đổi hệ điều hành hơn. Mọi thứ sẽ bị
hỏng

@gentmatt Apple không muốn Java nữa và về cơ bản đã từ bỏ nó. Oracle đã chọn nhặt bóng.
Thorbjørn Ravn Andersen

1
Nó vẫn còn ngu ngốc để yêu cầu Java 6, cho rằng nó bây giờ bị phản đối ...
Donal Fellows

Câu trả lời:


27

JDK 7 sẽ được cài đặt trong / L Library / Java / JavaVirtualMachines / 1.7.0.jdk, JDK 6 trong / System / Library / Java / JavaVirtualMachines.

Để lừa OS X chấp nhận Java 7 thay vì đề xuất cài đặt Java 6, một liên kết tượng trưng đơn giản là đủ:

sudo mkdir /System/Library/Java/JavaVirtualMachines
sudo ln -s /Library/Java/JavaVirtualMachines/1.7.0.jdk /System/Library/Java/JavaVirtualMachines/1.6.0.jdk

Hầu hết các Chương trình Java sẽ chạy với bản hack nhỏ này mà không cần cài đặt Java 6. Tùy chọn Java của OS X (và có thể một số khác) sẽ không kiểm tra phiên bản JVM khi nó được khởi động.


1
Dòng thứ hai không nên có "su", nó phải là "sudo ln -s ....."
David Morales

3
Tôi mới thực hiện một cài đặt mới bao gồm JDK 7u9 và nó đã được cài đặt /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk; các hướng dẫn làm việc tốt khác.
Geoffrey Wiseman

3
Coi chừng thực hiện symlink ... Apple đã phát hành bản cập nhật bảo mật 1.6 gần đây. Nếu bạn áp dụng bản cập nhật này từ Apple, symlink dường như đánh lừa bản cập nhật và cài đặt bản cập nhật 1.6 vào nơi symlink trỏ đến, tức là 1.7 của Oracle.

Điều này có thể phá vỡ mọi thứ nếu một chương trình Java yêu cầu Java 6 chứ không phải 7 nó có thể phá vỡ khi bạn sử dụng phiên bản khác.
dùng151019

Đây là một giải pháp tốt hơn nếu bạn tham gia Mavericks: stackoverflow.com/questions/19563766/NH
jedesah

4

Lưu ý: nếu bạn có thứ gì đó thực sự cần java6 và sẽ không hoạt động với java7, thì bạn có thể muốn ngừng cài đặt java7. Lý do là có thể hơi khó để cố gắng giữ cả 6 và 7 trên cùng một macffy, vì 7 pkg có một số lỗi với một số mục apple-6-java, như chi tiết dưới đây. Vì vậy, tôi sẽ tìm kiếm một số hướng dẫn từng bước về cách giữ 6 và 7 trên cùng một máy mac trước khi triển khai ... Xem thêm http://reviews.cnet.com/8301-13727_7-57533880-263/ java-Preferences-thiếu-after-mới nhất-os-x-java-update / vào ngày 18 tháng 10 năm 2012.

CHI TIẾT Tập lệnh shell cài đặt sẵn trong jre-7u9-macosx-x64.dmg chỉ cần loại bỏ ngăn trước của Apple (cũng như trình cắm), mà không có cảnh báo, bên dưới.

#!/bin/bash
PLUGIN_BASEDIR=/Library/Internet\ Plug-Ins
PLUGIN_NAME=${PLUGIN_BASEDIR}/JavaAppletPlugin.plugin
MKDIR=`which mkdir`
RM=/bin/rm
# Remove the symlink before installation forcing ystem Preferences.app to refresh its cache
PREF_PANE_NAME=JavaControlPanel.prefpane
PREF_PANE_DEST=/Library/PreferencePanes/
# Actually removes the symlink
if [[ -h "${PREF_PANE_DEST}/${PREF_PANE_NAME}" ]]; then
     ${RM} -rf "${PREF_PANE_DEST}/${PREF_PANE_NAME}"
fi
# Create the /Library/Internet Plug-Ins if not present
if [[ ! -d "${PLUGIN_BASEDIR}" ]]; then
     ${MKDIR} -p "${PLUGIN_BASEDIR}"
fi
# If Apple's plugin is present, then delete it
if [[ -h "${PLUGIN_NAME}" ]] && [[ -d "${PLUGIN_NAME}" ]]; then
    ${RM} -rf "${PLUGIN_NAME}"
fi

=== Và tập lệnh cài đặt bài đăng thiết lập một liên kết tượng trưng ===

#!/bin/bash
LN=`which ln`
CHOWN=`which chown`
PLUGIN_FILEPATH=/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
PREF_PANE_NAME=JavaControlPanel.prefpane
PREF_PANE_SRC=/Library/Internet\ Plug-       Ins/JavaAppletPlugin.plugin/Contents/Home/lib/deploy/JavaControlPanel.prefpane
PREF_PANE_DEST=/Library/PreferencePanes/
if [ ! -h "${PREF_PANE_DEST}/${PREF_PANE_NAME}" ]; then
    ${LN} -s "${PREF_PANE_SRC}" "${PREF_PANE_DEST}"
fi
${CHOWN} -R root:wheel "${PLUGIN_FILEPATH}"

-2

Sư tử núi chỉ có Java 7

Bạn đang đi đúng hướng 

Không cần cài đặt Java 6

Lời nhắc để cài đặt, như được mô tả trong câu hỏi, sẽ được mong đợi.

Vì vậy, câu trả lời ngắn gọn của tôi là có, bạn có thể có Java 7 một mình; nhưng không phải không có cài đặt Java 6.

Thử:

  1. cho phép Apple cài đặt Java
  2. xóa, từ hai thư mục bên dưới, (các) phiên bản Java không còn cần thiết:

    / Thư viện / Java / JavaVirtualMachines

    / Hệ thống / Thư viện / Java / JavaVirtualMachines

(Đối với trường hợp như vậy, tôi cho rằng bạn có thể bỏ qua lời khuyên thông thường để không can thiệp vào /Systemcông cụ.)


2
Java 7 được cài đặt trong / Library / Java / JavaVirtualMachines trong khi Java 6 ở dưới / System / Library / Java / JavaVirtualMachines Xóa 1.6.0.jdk từ / System / Library / Java / JavaVirtualMachines trong hộp thoại cài đặt bật lại. Điều có vẻ hiệu quả là tạo một liên kết tượng trưng 1.6.0.jdk (bên dưới / Hệ thống / ...) thành 1.7.0.jdk (bên dưới / Thư viện / ...). Các chương trình Java không kiểm tra phiên bản Java chạy tốt (các khối Tùy chọn Java khi bắt đầu vì có vẻ như sẽ kiểm tra xem Java 5 hoặc 6 đã được cài đặt chưa)
Nicolas

Thật tuyệt - bạn có muốn thêm câu trả lời của riêng mình không? Vui lòng bỏ phiếu của tôi - Tôi sẽ không vi phạm - dự đoán rõ ràng không chính xác cho câu hỏi, bỏ phiếu sẽ giúp những người dùng khác không đoán nhầm tương tự cho các vấn đề liên quan đến Java.
Graham Perrin
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.