Eclipse 在 MacOS 上意外退出

Raw*_*awa 2 eclipse macos macos-catalina

昨天,我刚刚在 Mac OS Catalina 版本 10.15.7 上安装了适用于企业 Java 和 Web 开发人员的 Eclipse IDE。我将 Eclipse.app 从 Downloads 文件夹拖到 Application 文件夹。它工作得很好。我创建了几个 servlet。但今天,当我点击该应用程序打开它时,我收到了问题报告(错误),因此它无法打开。

错误详细信息是..

自启动后唤醒时间:3300 秒

系统完整性保护:已启用

崩溃的线程:0

异常类型:EXC_CRASH(代码签名无效) 异常代码:0x0000000000000000、0x0000000000000000 异常注释:
EXC_CORPSE_NOTIFY

终止原因:命名空间 CODESIGNING,代码 0x1

内核消息:

VM 区域接近 0 (cr2):

__TEXT                 000000000c447000-000000000c44b000 [   16K] r-x/r-x SM=COW  
Run Code Online (Sandbox Code Playgroud)

线程 0 崩溃: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:0x000000 0000000200 cr2:0x0000000000000000 逻辑 CPU:0 错误代码:0x00000000
陷阱编号:0


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

  • 从应用程序文件夹中移动 Eclipse.app
  • eclipse -clean
  • 我双击可执行文件 eclipse,其中 /Applications/Eclipse.app/Contents/MacOS

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

Ant*_*ony 6

现代 Eclipse(2021-09 年甚至更早)与Gatekeeper存在严重不兼容性,Gatekeeper 检查 Eclipse.app 包的代码设计。Apple 不允许自行修改捆绑包,因为这会破坏 macOS 的安全模型——恶意软件防护 (Xprotect)。请参阅: https: //electiclight.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}
Run Code Online (Sandbox Code Playgroud)

对我有用的是通过递归删除隔离的特定扩展属性来定义 Gatekeeper 的 Xprotect 例外。安装 Eclipse 之后、运行之前直接使用以下命令:

xattr -r -d com.apple.quarantine /Applications/Eclipse.app
Run Code Online (Sandbox Code Playgroud)

请参阅:https://electiclight.co/2019/06/17/what-to-do-when-you-cant-launch-an-app/