最近在玩RLCraft,在windows中运行正常的,移植到macOS中发现如果加载OptiFine模组就会崩溃
报错日志
报错日志如下,其中已经包含了各种版本信息,我就不单独说明了。这里说一下,报错的时候用的是oracle jdk x64的,我平时开发项目使用。
[16:55:35] [Client thread/INFO]: [OptiFine]
[16:55:35] [Client thread/INFO]: [OptiFine] OptiFine_1.12.2_HD_U_G5
[16:55:35] [Client thread/INFO]: [OptiFine] Build: 20210124-142939
[16:55:35] [Client thread/INFO]: [OptiFine] OS: Mac OS X (x86_64) version 15.1.1
[16:55:35] [Client thread/INFO]: [OptiFine] Java: 1.8.0_411, Oracle Corporation
[16:55:35] [Client thread/INFO]: [OptiFine] VM: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
[16:55:35] [Client thread/INFO]: [OptiFine] LWJGL: 2.9.2
[16:55:35] [Client thread/INFO]: [OptiFine] OpenGL: Apple M2, version 2.1 Metal - 89.3, Apple
[16:55:35] [Client thread/INFO]: [OptiFine] OpenGL Version: 2.1.0
[16:55:35] [Client thread/INFO]: [OptiFine] Maximum texture size: 16384x16384
[16:55:35] [VersionCheck/INFO]: [OptiFine] Checking for new version
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'NSWindow geometry should only be modified on the main thread!'
*** First throw call stack:
(
0 CoreFoundation 0x00007ff802f46f4e __exceptionPreprocess + 242
1 libobjc.A.dylib 0x00007ff802a30f12 objc_exception_throw + 62
2 CoreFoundation 0x00007ff802f69d84 -[NSException raise] + 9
3 AppKit 0x00007ff80736f9d1 -[NSWindow(NSWindow_Theme) _postWindowNeedsToResetDragMargins] + 349
4 AppKit 0x00007ff8067a480d -[NSThemeFrame setStyleMask:] + 162
5 AppKit 0x00007ff8067a4618 __25-[NSWindow setStyleMask:]_block_invoke + 1974
6 AppKit 0x00007ff8067a3e08 NSPerformVisuallyAtomicChange + 134
7 AppKit 0x00007ff8067a3d21 -[NSWindow setStyleMask:] + 150
8 liblwjgl.dylib 0x000000013b335ee2 Java_org_lwjgl_opengl_MacOSXDisplay_nSetResizable + 82
9 ??? 0x000000010ff94387 0x0 + 4562961287
10 ??? 0x000000010ff8433d 0x0 + 4562895677
)
libc++abi: terminating due to uncaught exception of type NSException
[16:55:35] [org.jackhuang.hmcl.event.EventBus.fireEvent/INFO] ProcessExitedAbnormallyEvent [source=org.jackhuang.hmcl.launch.ExitWaiter@6982d7ea, process=ManagedProcess[commands=[/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java, -Xmx4096m, -Dfile.encoding=UTF-8, -Dsun.stdout.encoding=UTF-8, -Dsun.stderr.encoding=UTF-8, -Djava.rmi.server.useCodebaseOnly=true, -Dcom.sun.jndi.rmi.object.trustURLCodebase=false, -Dcom
排除过程
- 首先我要确定的是OptiFine是否支持macOS,经测试MC 1.20.1-Forge-OptiFine中完美运行。所以至少可以确定是支持macOS的。
解决办法
我在这个地址找到了解决办法,但是这个地址提供的JDK版本我是无法正常安装成功的。
https://github.com/MultiMC/Launcher/wiki/Java-on-macOS
我最终是从oracle官网下载的最新的arm版本的,然后就启动成功啦。
https://www.oracle.com/java/technologies/downloads/#java8-mac
我下载的JDK版本是
总结
最终发现原来是JDK版本的原因导致的。终于成功运行了,开心!!!