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.app
eclipse -clean
- 我双击了可执行文件 eclipse,它在
/Applications/Eclipse.app/Contents/MacOS
我想重新安装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/
昨天,我刚刚在 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_NOTIFYTermination 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 + 0Thread 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.app
eclipse -clean
- 我双击了可执行文件 eclipse,它在
/Applications/Eclipse.app/Contents/MacOS
我想重新安装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/