Mountain Lion tylko z Javą 7

39

Przeprowadziłem czystą instalację Mountain Lion i zainstalowałem JDK7.

java -versionw Terminalu zwraca java version "1.7.0_05"poprawnie, nadal Preferencje Java i niektóre inne programy Java (takie jak Eclipse) powodują wyświetlenie monitów o instalację Java SE 6.

Mogę perfekcyjnie uruchomić Eclipse z wiersza poleceń w Javie 7.

Czy istnieje sposób, aby to działało bez konieczności instalowania Java 6?

Nicolas
źródło
1
To jest naprawdę pomieszane. Dlaczego, u licha, nie jest to jeszcze naprawione? Czy zwiększenie bezpieczeństwa nie jest główną motywacją, dla której Apple zrezygnowało z kontroli procedury aktualizacji Java? Dlaczego więc OSX nadal monituje mnie o zainstalowanie przestarzałej Javy? Yikes!
gentmatt,
@gentmatt Java 7 nie jest prostą aktualizacją Java 6 - bardziej przypomina zmianę systemów operacyjnych. Tak wiele rzeczy się zepsuje przy użyciu większej wersji, a obie główne wersje zostały zaktualizowane o poprawki bezpieczeństwa
użytkownik151019,
@gentmatt Apple nie chciał już Java i w zasadzie porzucił ją. Oracle wybrał piłkę.
Thorbjørn Ravn Andersen
1
Wciąż głupie jest wymaganie Java 6, biorąc pod uwagę, że teraz jest przestarzałe…
Donal Fellows

Odpowiedzi:

27

JDK 7 zostanie zainstalowany w /Library/Java/JavaVirtualMachines/1.7.0.jdk, JDK 6 w / System / Library / Java / JavaVirtualMachines.

Aby oszukać OS X, aby zaakceptował Javę 7 zamiast proponować instalację Java 6, wystarczy proste dowiązanie symboliczne:

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

Większość programów Java będzie działać z tym małym włamaniem bez konieczności instalowania Java 6. Preferencje Java OS OS X (i być może niektóre inne) nie będą, ponieważ wydaje się, że jawnie sprawdzają wersję JVM po uruchomieniu.

Nicolas
źródło
1
Druga linia nie powinna mieć „su”, powinna być „sudo ln -s .....”
David Morales,
3
Właśnie wykonałem nową instalację, w tym JDK 7u9, i została ona zainstalowana /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk; w przeciwnym razie instrukcje działały dobrze.
Geoffrey Wiseman
3
Uważaj na tworzenie dowiązania symbolicznego ... Firma Apple wydała niedawno aktualizację zabezpieczeń 1.6. Jeśli zastosujesz tę aktualizację od Apple, dowiązanie symboliczne wydaje się zmylić aktualizację i instaluje aktualizację 1.6 w miejscu, w którym wskazuje dowiązanie symboliczne, tj. W wersji 1.7 Oracle.
Może to zepsuć się, jeśli program Java wymaga Java 6, a nie 7, może się zepsuć podczas korzystania z innej wersji.
user151019,
Oto lepsze rozwiązanie, jeśli korzystasz z Mavericks: stackoverflow.com/questions/19563766/...
jedesah
4

Uwaga: jeśli masz coś, co naprawdę wymaga java6 i nie będzie działać z java7, możesz wstrzymać się z instalacją java7. Powodem jest to, że próba utrzymania zarówno 6, jak i 7 na tym samym komputerze Macintosh może być nieco trudna, ponieważ 7 pkg trochę psuje niektóre elementy Apple-6-Java, jak opisano poniżej. Będę więc szukał instrukcji krok po kroku dotyczących utrzymywania 6 i 7 na tym samym komputerze Mac przed wdrożeniem tego ... Zobacz także http://reviews.cnet.com/8301-13727_7-57533880-263/ java-preferences-missing-after-latest-os-x-java-update / on 18 października 2012.

SZCZEGÓŁY Skrypt powłoki preinstalacyjnej w jre-7u9-macosx-x64.dmg po prostu usuwa przed okienkiem Apple (jak również wtyczkę), bez ostrzeżenia, poniżej.

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

=== A skrypt poinstalacyjny konfiguruje dowiązanie symboliczne ===

#!/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}"
wanilia
źródło
-2

Mountain Lion z samą Javą 7

Jesteś na dobrej drodze… 

Bez instalacji Java 6

… Należy się spodziewać monitów o instalację, zgodnie z opisem w pytaniu.

Moja krótka odpowiedź brzmi: tak, możesz mieć samą Javę 7; ale nie bez instalacji Java 6.

Próbować:

  1. zezwól Apple na instalację Java
  2. usuń z dwóch poniższych katalogów wersje Java, która nie jest już wymagana:

    / Library / Java / JavaVirtualMachines

    / System / Library / Java / JavaVirtualMachines

(W przypadku takim jak ten uważam, że możesz bezpiecznie zignorować zwykłą radę, aby nie ingerować w /Systemróżne rzeczy).

Graham Perrin
źródło
2
Java 7 jest zainstalowany w / Library / Java / JavaVirtualMachines, podczas gdy Java 6 jest w / System / Library / Java / JavaVirtualMachines Usunięcie 1.6.0.jdk z / System / Library / Java / JavaVirtualMachines powoduje ponowne wyświetlenie okna dialogowego instalacji. Wydaje się, że działa to utworzenie dowiązania symbolicznego 1.6.0.jdk (pod / System / ...) do 1.7.0.jdk (pod / Library / ...). Programy Java, które nie sprawdzają wersji Java działają poprawnie (bloki Preferencji Java na początku wydają się sprawdzać, czy Java 5 lub 6 jest zainstalowana)
Nicolas
Fajnie - czy chcesz dodać własną odpowiedź? Głosuj za moim - nie obrażę się - przypuszczenie było wyraźnie niepoprawne w przypadku pytania, głosowanie w dół pomoże innym użytkownikom nie popełniać podobnie błędnych domysłów w kwestiach związanych z Javą.
Graham Perrin