Eclipse 在 MacOS 上意外退出

Eclipse quit Unexpectedly on MacOS

昨天,我刚刚在 Mac OS Catalina 版本 10.15.7 上为企业 Java 和 Web 开发人员安装了 Eclipse IDE。我将 Eclipse.app 从下载文件夹拖到应用程序文件夹。它工作得很好。我创建了几个 servlet。但是今天当我点击应用程序打开它时,我收到了一个问题报告(错误),所以它没有打开。

错误详细信息是..

Time Awake Since Boot: 3300 seconds

System Integrity Protection: enabled

Crashed Thread: 0

Exception Type: EXC_CRASH (Code Signature Invalid) Exception Codes: 0x0000000000000000, 0x0000000000000000 Exception Note:
EXC_CORPSE_NOTIFY

Termination Reason: Namespace CODESIGNING, Code 0x1

kernel messages:

VM Regions Near 0 (cr2):

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

Thread 0 Crashed: 0 ???
0x0000000015674000 _dyld_start + 0

Thread 0 crashed with X86 Thread State (64-bit): 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 Logical CPU: 0 Error Code:
0x00000000 Trap Number: 0


事实上,我已经用谷歌搜索了这个问题,但对其他人有效的解决方案对我并不适用。例如,我尝试了以下解决方案:

我想重新安装Eclipse,但在此之前我想知道是否有解决这个问题的方法。

Code Signature Invalid 表示应用程序已被破坏,导致签名不再匹配。重新安装是解决此问题的正确做法。

至于是什么原因造成的,是上次启动成功到第一次没有启动之间发生的事情。也许这是 Eclipse 本身的错误,也许是您采取的操作。事后很难弄清楚。如果它不断发生,Eclipse bugtracker 是报告它的正确位置。

现代 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}

对我有用的是通过递归删除隔离的特定扩展属性为 Gatekeeper 的 Xprotect 定义一个例外。在安装 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/