Гірський лев лише з Java 7


39

Я здійснив чисту установку Mountain Lion та встановив JDK7.

java -versionу терміналі повертається java version "1.7.0_05"правильно, все ж налаштування Java та деякі інші програми Java (наприклад, Eclipse) призводять до запитів про встановлення Java SE 6.

Я можу запустити Eclipse ідеально з командного рядка з Java 7.

Чи є спосіб зробити це без роботи Java 6?


1
Це дійсно заплутано. Чому на землі це все ще не виправлено? Чи не підвищена безпека є основною мотивацією, чому Apple відмовилася від контролю над процедурою оновлення Java? Чому тоді OSX все ще пропонує мені встановити застарілу Java? Yikes!
gentmatt

@gentmatt Java 7 - це не просте оновлення Java 6 - це більше схоже на зміну ОС. Речі SOme будуть порушені, використовуючи більшу версію, і обидві основні версії оновлюються для виправлень безпеки
user151019

@gentmatt Apple більше не хотіла Java і по суті відмовилася від неї. Oracle вирішив забрати м'яч.
Thorbjørn Ravn Andersen

1
Ще нерозумно вимагати Java 6, враховуючи, що вона тепер застаріла…
Дональні стипендії

Відповіді:


27

JDK 7 буде встановлений під /Library/Java/JavaVirtualMachines/1.7.0.jdk, JDK 6 під / System / Library / Java / JavaVirtualMachines.

Щоб підманути OS X прийняти Java 7 замість того, щоб пропонувати встановити Java 6, достатньо простого посилання:

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

Більшість програм Java буде працювати з цим маленьким хаком без необхідності встановлення Java 6. Налаштування Java OS (а може бути і деякі інші) не будуть, як здається, явно перевіряти версію JVM при її запуску.


1
У другому рядку не повинно бути "su", воно повинно бути "sudo ln -s ....."
Девід Моралес

3
Я щойно зробив нову установку, включаючи JDK 7u9, і вона була встановлена ​​на /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk; інструкція працювала нормально інакше.
Джеффрі Вісман

3
Слідкуйте за тим, щоб зробити симпосилання ... Apple нещодавно випустила оновлення безпеки 1.6. Якщо застосувати це оновлення від Apple, схоже, що посилання наводить ошукання оновлення та встановлює оновлення 1.6 туди, куди вказує символьне посилання, тобто 1.7 Oracle.

Це може зламати речі, якщо програма Java вимагає Java 6, а не 7, вона може зламатися при використанні іншої версії.
користувач151019

Ось краще рішення , якщо ви перебуваєте на Mavericks: stackoverflow.com/questions/19563766 / ...
jedesah

4

Примітка: якщо у вас є щось, що дійсно потребує java6 і не буде працювати з java7, то, можливо, ви захочете відкласти час встановлення java7. Причина в тому, що може бути трохи складним спробувати зберегти як 6, так і 7 на одному macintosh, оскільки 7 кг є деяким возитися з деякими яблучними предметами, як описано нижче. Отже, я буду шукати покрокові інструкції щодо збереження 6 і 7 на тому самому Mac, перш ніж виконувати цю програму ... Дивіться також http://reviews.cnet.com/8301-13727_7-57533880-263/ java-preferences-missing-after-latest-os-x-java-update / 18 жовтня 2012 року.

ДЕТАЛІ Сценарій оболонки перед встановленням у jre-7u9-macosx-x64.dmg просто видаляє попередню панель Apple (як і плагін), без попередження.

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

=== І сценарій після встановлення встановлює симпосилання ===

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

Гірський лев тільки з Java 7

Ви на правильному шляху ... 

Без установки Java 6

... очікується сповіщення про встановлення, як описано в питанні.

Отже, моя коротка відповідь - так, ви можете мати Java 7 в поодинці; але не без установки Java 6.

Спробуйте:

  1. дозволяють встановити Java Java
  2. видаліть із двох нижче каталогів версію (-ів) Java, яка більше не потрібна:

    / Бібліотека / Java / JavaVirtualMachines

    / Система / Бібліотека / Java / JavaVirtualMachines

(У такому випадку, я вважаю, ви можете сміливо ігнорувати звичайну пораду не втручатися в /Systemречі.)


2
Java 7 встановлюється в розділі / Бібліотека / Java / JavaVirtualMachines, а Java 6 - / Система / Бібліотека / Java / JavaVirtualMachines Видалення 1.6.0.jdk з / Система / Бібліотека / Java / JavaVirtualMachines приводить до діалогового вікна встановлення знову. Що, здається, працює - це зробити посилання 1.6.0.jdk (під / Система / ...) до 1.7.0.jdk (під / Бібліотека / ...). Програми Java, які не перевіряють версію Java, запускаються нормально (блоки налаштувань Java на початку, як здається, перевіряють, чи встановлено Java 5 або 6)
Nicolas

Класно - ви хочете додати власну відповідь? Будь ласка, проголосуйте проти моїх - я не ображатимусь - припущення було явно неправильним для запитання, а голосування вниз допоможе іншим користувачам не робити подібних помилок на здогадки щодо проблем, пов’язаних з Java.
Грем Перрін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.