Mountain Lion dengan Java 7 saja

39

Saya melakukan instalasi Gunung Singa yang bersih dan menginstal JDK7.

java -versiondi Terminal kembali java version "1.7.0_05"dengan benar, masih Java Preferences dan beberapa program Java lainnya (seperti Eclipse) menghasilkan prompt untuk menginstal Java SE 6.

Saya dapat memulai Eclipse dengan sempurna dari baris perintah dengan Java 7.

Apakah ada cara untuk membuatnya berfungsi tanpa harus menginstal Java 6?

Nicolas
sumber
1
Ini benar-benar kacau. Mengapa ini masih belum diperbaiki? Bukankah peningkatan keamanan menjadi motivasi utama mengapa Apple menyerahkan kendali atas prosedur pembaruan Java? Lalu mengapa OSX masih meminta saya untuk menginstal Java yang sudah ketinggalan zaman? Astaga!
Gentmatt
@ gentmatt Java 7 bukan pembaruan sederhana untuk Java 6 - ini lebih seperti mengganti OS. Beberapa hal akan rusak menggunakan versi yang lebih besar dan kedua versi utama diperbarui untuk perbaikan keamanan
user151019
@gentmatt Apple tidak ingin Java lagi dan pada dasarnya mengabaikannya. Oracle memilih untuk mengambil bola.
Thorbjørn Ravn Andersen
1
Masih bodoh untuk meminta Java 6, mengingat sekarang sudah tidak digunakan lagi ...
Donal Fellows

Jawaban:

27

JDK 7 akan diinstal di /Library/Java/JavaVirtualMachines/1.7.0.jdk, JDK 6 di bawah / System / Library / Java / JavaVirtualMachines.

Untuk mengelabui OS X untuk menerima Java 7 daripada mengusulkan untuk menginstal Java 6, symlink sederhana sudah cukup:

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

Kebanyakan Program Java akan berjalan dengan hack kecil ini tanpa perlu menginstal Java 6. Preferensi Java OS X (dan mungkin beberapa yang lain) tidak akan seperti yang secara eksplisit memeriksa versi JVM ketika dijalankan.

Nicolas
sumber
1
Baris kedua seharusnya tidak memiliki "su", itu harus "sudo ln -s ....."
David Morales
3
Saya baru saja menginstal baru termasuk JDK 7u9, dan itu diinstal ke /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk; instruksi bekerja dengan baik jika tidak.
Geoffrey Wiseman
3
Hati-hati karena melakukan symlink ... Apple merilis pembaruan keamanan 1.6 baru-baru ini. Jika Anda menerapkan pembaruan ini dari Apple, symlink tampaknya membodohi pembaruan dan menginstal pembaruan 1.6 ke tempat symlink menunjuk ke, yaitu Oracle 1.7.
Ini dapat merusak hal-hal jika program Java memerlukan Java 6 dan bukan 7 itu bisa rusak ketika Anda menggunakan versi lain.
user151019
Ini adalah solusi yang lebih baik jika Anda menggunakan Mavericks: stackoverflow.com/questions/19563766/…
jedesah
4

Catatan: jika Anda memiliki sesuatu yang benar-benar membutuhkan java6 dan tidak akan berfungsi dengan java7, maka Anda mungkin ingin menunda menginstal java7. Alasannya adalah mungkin agak sulit untuk mencoba menjaga keduanya 6 dan 7 di macintosh yang sama, karena 7 pkg melakukan beberapa main-main dengan beberapa item apple-6-java, seperti yang dijelaskan di bawah ini. Jadi, saya akan mencari beberapa petunjuk langkah demi langkah tentang menjaga 6 dan 7 pada mac yang sama sebelum meluncurkan ini ... Lihat juga http://reviews.cnet.com/8301-13727_7-57533880-263/ java-preferensi-hilang-setelah-terbaru-os-x-java-update / pada 18 Okt 2012

RINCIAN Skrip shell pra-instal di jre-7u9-macosx-x64.dmg hanya menghapus panel pra-Apple (dan juga plug-in), tanpa peringatan, di bawah ini.

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

=== Dan skrip instal pemasangan membuat symlink ===

#!/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}"
vanila
sumber
-2

Mountain Lion dengan Java 7 saja

Anda berada di jalur yang benar ... 

Tanpa menginstal Java 6

... diminta untuk menginstal, seperti yang dijelaskan dalam pertanyaan, yang diharapkan.

Jadi jawaban singkat saya adalah ya, Anda dapat memiliki Java 7 sendiri; tetapi tidak tanpa instalasi Java 6.

Mencoba:

  1. izinkan Apple memasang Java
  2. hapus, dari dua direktori di bawah ini, versi Java yang tidak lagi diperlukan:

    / Perpustakaan / Java / JavaVirtualMachines

    / Sistem / Perpustakaan / Java / JavaVirtualMachines

(Untuk kasus seperti ini, saya rasa Anda dapat dengan aman mengabaikan saran biasa untuk tidak mengganggu /Systembarang - barang.)

Graham Perrin
sumber
2
Java 7 diinstal pada / Library / Java / JavaVirtualMachines sementara Java 6 berada di bawah / System / Library / Java / JavaVirtualMachines Menghapus 1.6.0.jdk dari / System / Library / Java / JavaVirtualMachines menghasilkan dialog instalasi yang muncul lagi. Apa yang tampaknya berhasil adalah membuat symlink 1.6.0.jdk (di bawah / System / ...) ke 1.7.0.jdk (di bawah / Library / ...). Program Java yang tidak memeriksa versi Java berjalan dengan baik (Java Preferences blok pada awalnya karena tampaknya memeriksa apakah Java 5 atau 6 diinstal)
Nicolas
Keren - Anda ingin menambahkan jawaban Anda sendiri? Berikan suara saya - saya tidak akan tersinggung - tebakan itu jelas tidak benar untuk pertanyaan itu, penurunan suara akan membantu pengguna lain untuk tidak membuat dugaan yang salah untuk masalah terkait Java.
Graham Perrin