Eclipse неожиданно завершает работу на macOS

#eclipse #macos #macos-catalina

#eclipse #macos #macos-каталина

Вопрос:

Я только что установил Eclipse IDE для корпоративных Java и веб-разработчиков на Mac OS Catalina версии 10.15.7, вчера. Я перетащил Eclipse.app из папки Downloads в папку Application. Все работало просто отлично. Я создал пару сервлетов. Но сегодня, когда я нажал на приложение, чтобы открыть его, я получил сообщение о проблеме (ошибка), и поэтому оно не открылось.

Сведения об ошибке..

Время пробуждения с момента загрузки: 3300 секунд

Защита целостности системы: включена

Аварийный поток: 0

Тип исключения: EXC_CRASH (неверная подпись кода) Коды исключений: 0x0000000000000000, 0x0000000000000000 Примечание об исключении:
EXC_CORPSE_NOTIFY

Причина завершения: КОДИРОВАНИЕ пространства имен, код 0x1

сообщения ядра:

Области виртуальной машины, близкие к 0 (cr2):

 __TEXT                 000000000c447000-000000000c44b000 [   16K] r-x/r-x SM=COW  
 

Поток 0 разбился: 0???
0x0000000015674000 _dyld_start 0

Поток 0 разбился с состоянием потока X86 (64-разрядный): rax: 0x0000000000000000 rbx: 0x0000000000000000 rcx: 0x0000000000000000 rdx: 0x0000000000000000 rdi: 0x0000000000000000 rsi: 0x0000000000000000 rbp: 0x0000000000000000 rsp: 0x00007ffee37bcc60
r8: 0x0000000000000000 r9: 0x0000000000000000 r10: 0x0000000000000000 r11: 0x0000000000000000 r12: 0x0000000000000000 r13: 0x0000000000000000 r14: 0x0000000000000000 r15:0x0000000000000000 rip: 0x0000000015674000 rfl: 0x0000000000000200 cr2: 0x0000000000000000 Логический процессор: 0 Код ошибки:
0x00000000 Номер ловушки: 0


На самом деле, я уже погуглил проблему, но решения, которые работали для других, не работали для меня. Например, я попробовал следующие решения:

  • переместите Eclipse.app из папки приложения
  • eclipse -clean
  • Я дважды щелкнул исполняемый файл eclipse, который в /Applications/Eclipse.app/Contents/MacOS

Я думал о повторной установке Eclipse, но перед этим я хочу знать, есть ли решение этой проблемы.

Ответ №1:

Современное Eclipse (2021-09 и, возможно, даже раньше) имеет серьезную несовместимость с Gatekeeper, который проверяет КОДОВОЕ оформление пакета Eclipse.app. Apple не разрешает самостоятельное изменение пакетов, поскольку это подрывает модель безопасности macOS — защиту от вредоносных программ (Xprotect). Смотрите: https://eclecticlight.co/tag/gatekeeper /

Я подозреваю, что Info.plist изменяется после первоначального запуска или при изменении некоторых пользовательских настроек или настроек IDE.

Обходной путь, такой как попытка разработать код вручную, является громоздким и не сработал для меня на Catalina:

 codesign -v -vvv --deep /Applications/Eclipse.app
/Applications/Eclipse.app: invalid Info.plist (plist or signature have been modified)
In architecture: x86_64

sudo codesign --force --sign -  /Applications/Eclipse.app
Password:
/Applications/Eclipse.app: replacing existing signature
/Applications/Eclipse.app: bundle format unrecognized, invalid, or unsuitable
In subcomponent: /Applications/Eclipse.app/Contents/MacOS/${user.home}
 

Что действительно сработало для меня, так это определение исключения для Xprotect Gatekeeper путем рекурсивного удаления определенного расширенного атрибута для карантина. Используйте следующее непосредственно после установки Eclipse и перед его запуском:

 xattr -r -d com.apple.quarantine /Applications/Eclipse.app
 

Смотрите: https://eclecticlight.co/2019/06/17/what-to-do-when-you-cant-launch-an-app /

Ответ №2:

Неверная подпись кода означает, что приложение каким-то образом было повреждено, что приводит к тому, что подпись больше не совпадает. Переустановка — это правильный способ исправить это.

Что касается причины, это то, что произошло между последним успешным запуском и первым запуском, когда он не запустился. Может быть, это ошибка в самом Eclipse, может быть, это действие, которое вы предприняли. Это трудно понять после факта. Если это продолжает происходить, средство отслеживания ошибок Eclipse является подходящим местом для сообщения об этом.

Комментарии:

1. Спасибо за ваш ответ. Как вы сказали, я просто переустановлю его.