Java Mission Control от JDK 1.8.0_161 заморожен при запуске в Mac OS X

Я пытаюсь запустить Java Mission Control, как указано в JDK 1.8.0_161, в Mac OS X High Sierra (10.13.2, с дополнительным обновлением от января 2018 года), а приложение JMC заморожено, то есть я не могу просматривать панель браузера JVM.

Поскольку у меня был другой бывший JDK, поэтому я успешно проверил JMC со следующими версиями:

  • 1.8.0_121
  • 1.8.0_144
  • 1.8.0_151

Поэтому проблема очень специфична для JDK 1.8.0_161.

(Чтобы увидеть ваши JDK, запустите команду /usr/libexec/java_home -V).

(Чтобы запустить бывший JMC, то есть /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/bin/jmc)

Как боковая проверка, я успешно с успехом запускал JMC JDK 1.8.0_161 на Windows 10.

Так вы испытываете ту же проблему?

Есть ли какие-то настройки, чтобы настроить работу? (Например, это будет проблема, связанная с Mac OS X Gatekeeper!?)

И как сообщить об этом Oracle правильно... Я искал их базу данных ошибок без успеха, и когда я пытаюсь представить ошибку, я не могу понять, какая из них будет подходящей подкатегорией (см. https://bugreport.java.com/submit_intro.do), поскольку JMC не указан в разделе TOOLS... Любой совет!?

Ответ 1

Это, к сожалению, ошибка, которую мы недавно обнаружили, вызванная несовместимостью между старыми версиями Eclipse/SWT и новыми исправлениями, выполненными в JDK 8u152 (backported от JDK 9).

Обходным решением является запуск более старой версии JDK 8 или последней версии JDK 7 (которая включает ту же версию JMC). JDK 9 также работает, включая новый JMC 6.

(Oracle Internal): JMC-5139

Ответ 2

Обходной путь для этого есть, как упомянуто @jwatkins в комментарии.

  1. Загрузите банку cocoa SWT с здесь.
  2. Перейдите в JMK-путь JDK (Вы можете найти этот путь, щелкнув правой кнопкой мыши значок jmc в доке → Параметры → Показать в Finder, затем щелкните правой кнопкой мыши App → Показать содержимое пакета).

    • Например: cd /Library/Java/JavaVirtualMachines/jdk<version>.jdk/Contents/Home/lib/missioncontrol
  3. Сделайте резервную копию существующей банки, используя sudo mv plugins/org.eclipse.swt.cocoa.macosx.x86_64_3.103.1.v20140903-1947.jar ../

  4. Скопируйте загруженный zip swt.jar, используя sudo cp ~/Downloads/swt.jar plugins/org.eclipse.swt.cocoa.macosx.x86_64_3.103.1.v20140903-1947.jar
  5. Перезапустите jmc

ПРИМЕЧАНИЕ: помните! имя вашего нового скопированного jar файла должно совпадать со старым (для загрузки jar файлов используется OSGi bundles.info)

Ответ 3

У меня была такая же проблема, и если вы не возражаете против использования eclipse, вы можете установить этот плагин: https://marketplace.eclipse.org/content/java-mission-control.

Но когда Клара приняла ответ, мне в итоге удалось запустить Java Mission Control (хотя и не самую новую версию, но она все еще разблокировала меня без большого обходного пути):

  1. Загрузите старую версию JDK (я взял Java SE Development Kit 8u91)
  2. Я поместил его в мой /Library/Java/JavaVirtualMachines репозиторий. Я не изменил свои переменные окружения, поскольку я хочу продолжать использовать более новую версию.
  3. Я запустил приложение, размещенное в jdk1.8.0_91.jdk/Contents/Home/lib/missioncontrol/Java Mission Control.app

Ответ 4

Может быть, есть другой обходной путь в соответствии с запиской о выпуске Oracle JMC, он сказал, что

На платформе Mac OS X, если JDK установлен в месте, содержащем пробелы, невозможно запустить Java Mission Control (JMC) с помощью средства запуска jmc в bin или приложения Java Mission Control. Обходной путь должен либо изменить местоположение без пробелов, либо запустить JMC, используя следующее:

java -XstartOnFirstThread -Djava.net.preferIPv4Stack=true -Dorg.eclipse.swt.internal.carbon.smallFonts -jar <JAVA_HOME>/lib/missioncontrol/mc.jar -ws cocoa

Хорошо работает на 1.8.0_181

Замечания к выпуску Java Mission Control (JMC) 5.2

Ответ 5

Это известная проблема, согласно официальному сайту. И они, похоже, ничего не делают с января 2018 года.

https://www.oracle.com/technetwork/java/javase/jmc55-release-notes-2412446.html#known-iss

Это упоминает три решения, но я следовал за ответом @Rasika Perera, чтобы решить эту проблему на JDK 1.8.0_202