本帖最后由 a1294790523 于 2019-12-20 11:38 编辑


写这篇指南的原因

很多人可能会说,你写这篇指南干嘛呢,不是到问答版提问就完事了吗?
但我写这篇指南的原因,正是因为问答版的现状。
随意打开问答版的一个帖子,就能看见各式各样的误导和使用了通用解决方案的回答,这些回答对问答版而言是降维打击,这篇指南,为的就是给提问者和回答者提供一些解决的问题的思路,以及为整合者和服主的错误解决提供帮助而写。

PS1:本指南的回复区不提供一对一的崩溃解决方案,需要提崩溃相关的问题的请左转问答版提问
PS2:可配合同类作品食用:
海螺:[教程] 自己动手排查报错
https://www.mcbbs.net/thread-729487-1-1.html
蝙蝠:怎么看崩溃报告和Timings?
https://www.mcbbs.net/thread-860103-1-1.html



前言

本指南为服主、客户端整合者、普通玩家所写
请确保你有至少10分钟的时间来阅读某一章节
为保证内容通俗易懂,已大幅简化一些内容
小人不才,如在阅读过程中发现有不懂的或者有不恰当的地方
欢迎提出疑问或建议




必要知识

崩溃发生的原因

异常指的是在程序运行过程中发生的异常事件,通常是由外部问题(如硬件错误、输入错误)所导致的。在Java等面向对象的编程语言中异常属于对象。——百度百科

玩过Mod整合包的玩家和服主应该对崩溃并不陌生,崩溃,其实是因为程序出现了一个无法处理的异常而导致的,在Java中使用的异常处理机制为中止模型,当出现了不安全或不恰当的情况时,程序可以抛出异常,但当这个异常无法被处理时,Java虚拟机就会随着这个异常的出现而终止,于是就产生了我们所说的崩溃。

异常的类型

在Java中异常有两大类, Error和Exception(它们的上一级是Throwable,也是最底层的类),由这两大类派生出其他异常,一般来说,Error下的异常是系统内部的异常,而Exception下的异常是可以被处理的异常,异常的一般命名模式为异常名+类别,其中异常名称采用驼峰命名法命名(单词首字母大写),比如IlegalAccessException就是一个类别为Exception,异常名为illegal access(非法访问)的异常。


包名

指的就是命名空间(可以理解为将东西区分开来的玩意),一般形式为xxx.yyy.zzz,“.”是分隔符,也代表了路径,比如com.sand.crash的路径就是com\sand\crash,在堆栈中包名后跟着类名,也用“.”分隔 。

堆栈(Stack)

这里实际指的是栈,一个栈由多个栈帧组成,为简便起见,你可以将栈理解为一个完整的生产工序,而将一个栈帧看成其中的一个流程。
栈帧的表现形式为:包名.类名.方法名

异常链

我们可以把一个程序的执行看成审核流程,一个审核流程由收件->一级部门审核->二级部门审核->三级部门审核->最高级部门审核组成,那么如果最高级部门审核中出现问题,那么就需要一级级下发下去,让作者知道审核不通过的原因,那么,就构成了一条异常链,与单个异常相比较,它提供了更多的信息,让分析更为便利。


线程

一个线程可以理解为一个人,在游戏中存在着多个线程,为了协助完成共同的任务,就出现了所谓的线程状态(State):NEW(我刚来的,还没准备好)、RUNNABLE(我在干活哦)、BLOCKED(我需要的东西被占用了,等他用完我才能继续干活)、WAITING(我需要等待某个人的动作才能继续干活)、TIMED_WAITING(与前者相同,只是加了时间限制)、TERMINATED(我活干完啦或者被其他人打断了)


报告分析

错误分析的顺序


从时间和效率上考虑,一般的崩溃分析次序为:
JVM崩溃日志>崩溃报告>日志
需要指出的一点是,崩溃报告是由Minecraft本身生成的,而非Java本身,如果在早期启动阶段崩溃,那么我们只能通过日志分析原因。

崩溃报告分析


那么,我们先由信息量最小的崩溃报告讲起:

崩溃报告的位置位于crash-reports(客户端在.minecraft\ crash-report s)文件夹,其目录下的文件便是崩溃报告了,命名方式为crash-日期_时间-客户端(client)/服务器(server).txt,例如
crash-2019-02-07_22.16.28-server.txt

首先是渲染类的崩溃:



---- Minecraft Crash Report ---←告诉你这玩意是MC的崩溃报告
// There are four lights! ←随机的崩溃日志句子,详情可见Wiki
Time: 2019-06-09 13:52:03 CST←崩溃时间
Description: Updating screen events
↑①先看描述,这里是在更新屏幕事件
java.lang.NoSuchMethodError: mezz.jei.gui.overlay.IngredientListOverlay.getStackUnderMouse()Lnet/minecraft/item/ItemStack;
↑②看异常:java.lang是包名,我们直接可以看最后一段NoSuchMethodError,异常名叫No Such Method,即没有这样的方法,而冒号(“:”)后给出了详细信息,也就是找不到的方法和它的方法描述符
↓这是出现异常前的堆栈,执行顺序从下到上
at org.cfpa.i18nupdatemod.hotkey.HotKeyHandler.onKeyPress(HotKeyHandler.java:87) ↑③看堆栈,我们可以看见这里出现了一个模组的名字,从包名(org.cfpa.i18nupdatemod.hotkey)可以得出是i18nupdatemod,如果不确定包名指的是什么mod,可拿包名在下方加载的mod搜索或百度搜索一下以帮助判断 at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_863_HotKeyHandler_onKeyPress_Pre.invoke(.dynamic)
↑这里是触发按键的FML事件

at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90)
at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:182)
at net.minecraft.client.gui.GuiScreen.handleInput(GuiScreen.java:511)
at net.minecraft.client.Minecraft.runTick(Minecraft.java:1759)
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1098)
at net.minecraft.client.Minecraft.run(Minecraft.java:3942)
at net.minecraft.client.main.Main.main(SourceFile:123)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)


↓这是产生错误时的所有已知的详细信息↓
A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------


↓影响的界面↓
-- Affected screen --
Screen name: mezz.jei.gui.recipes.RecipesGui
可以看到是jei的合成GUI

↓影响的地图↓

-- Affected level --
Level name: MpServer←地图名称
All players: 1 total; [GCEntityClientPlayerMP['sandtechnology'/435, l='MpServer', x=216.56, y=68.00, z=269.96]] ←玩家
Chunk stats: MultiplayerChunkCache: 230, 230
Level seed: 0←地图种子
Level generator: ID 00 - default, ver 1.  Features enabled: false←地图生成器,后面那个应该是是否开启了巨大化世界
Level generator options: ←地图生成器设置
Level spawn location: World: (228,64,256), Chunk: (at 4,4,0 in 14,16; contains blocks 224,0,256 to 239,255,271), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511) ←地图出生点位置(包括地图坐标、区块、Region)
Level time: 201 game time, 201 day time←地图时间
Level dimension: 0←地图维度,0为主世界
Level storage version: 0x00000 - Unknown? ←地图存储版本
Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false) ←地图天气
Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false←地图游戏模式
Forced entities: 133 total; [省略]
Retry entities: 0 total; []
Server brand: fml,forge←服务器侧名称
Server type: Integrated singleplayer server←服务器侧类型
↓系统信息↓
-- System Details --
Minecraft Version: 1.12.2
Operating System: Windows 10 (amd64) version 10.0
Java Version: 1.8.0_211, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 837386992 bytes (798 MB) / 4294967296 bytes (4096 MB) up to 4294967296 bytes (4096 MB)
JVM Flags: 6 total; -XX:+UseG1GC -XX:-UseAdaptiveSizePolicy -XX:-OmitStackTraceInFastThrow -Xmn128m -Xmx4096m -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump
IntCache: cache: 6, tcache: 0, allocated: 13, tallocated: 95
FML: MCP 9.42 Powered by Forge 14.23.5.2838 211 mods loaded, 211 mods active
States(状态): 'U' = Unloaded(已卸载) 'L' = Loaded(已加载) 'C' = Constructed (已构造)'H' = Pre-initialized(预初始化) 'I' = Initialized(初始化) 'J' = Post-initialized(后初始化) 'A' = Available(可用) 'D' = Disabled(已禁用) 'E' = Errored(出错)
State(状态)IDVersion(版本)Source(来源)Signature(签名)
LCHIJAminecraft1.12.2minecraft.jarNone
LCHIJAmcp9.42minecraft.jarNone
LCHIJAFML8.0.99.99forge-1.12.2-14.23.5.2838.jare3c3d50c7c986df74c645c0ac54639741c90a557
LCHIJAforge14.23.5.2838forge-1.12.2-14.23.5.2838.jare3c3d50c7c986df74c645c0ac54639741c90a557
LCHIJAcreativecoredummy1.0.0minecraft.jarNone
LCHIJAjecharacters1.12.0-3.3.0JustEnoughCharacters-1.12.0-3.3.0.jarNone
LCHIJAmicdoodlecore
minecraft.jarNone
LCHIJAsmoothfontcoremc1.12.2-1.16minecraft.jarNone


(以下省略系统信息,包括加载的资源包,是否使用了VBO等,一般可基本不看)
==========================================================


通篇下来,有以下几个关键信息

1.        这是在更新屏幕事件(渲染时)崩溃
2.        崩溃的原因和i18nupdatemod有关系
3.        这是按下一个按键时导致的崩溃
4.        崩溃的根本原因是找不到jei的方法


由上面的关键信息进一步推理可知,这是i18nupdatemod模组和jei新版本不兼容引起的问题


我们可以尝试:


1.        降级jei到旧版本
2.        反馈给i18nupdatemod作者943(该问题已在新版本修复)



接下来看看计算(ticking)实体时的崩溃(为了节省空间,前文提到过的内容不会再重复):

提醒你下列核心mod已经安装(核心mod一般会修改MC原版的代码,因此它们也有导致崩溃的可能)
WARNING: coremods are present:

  LoadingPlugin (Bloodmoon(血月)-MC1.12.2-1.5.3.jar)
  TheBetweenlandsLoadingPlugin (TheBetweenlands-3.4.9-core.jar)
  Do not report to Forge! (If you haven't disabled the FoamFix coremod, try disabling it in the config! Note that this bit of text will still appear.) ([优化]FoamFix-0.10.5.jar)
Contact their authors BEFORE contacting forge

// There are four lights!

Time: 7/4/19 12:32 AM
Description: Ticking entity
↑告诉你在计算实体


java.lang.NoSuchMethodError: net.minecraft.world.World.func_175682_a(Lnet/minecraft/util/EnumParticleTypes;ZDDDDDD[I)V
↑与前文相同的异常,但这次提到的是找不到MC内的方法
        at com.matez.wildnature.event.fallEvent.fallEvent(fallEvent.java:52)
↑传递实体掉落事件到名为wildnature的mod
        at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_300_fallEvent_fallEvent_LivingFallEvent.invoke(.dynamic)
↑传递实体掉落事件
        at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90)
        at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:187)
        at net.minecraftforge.common.ForgeHooks.onLivingFall(ForgeHooks.java:631)
(以下省略N行)

A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Thread: Server thread←服务器主线程
Stacktrace(堆栈跟踪):
        at com.matez.wildnature.event.fallEvent.fallEvent(fallEvent.java:52)
(以下省略N行,与上文大致相同)

-- Entity being ticked –
↑告诉你被计算的实体信息
Details:
        Entity Type: minecraft:spider (net.minecraft.entity.monster.EntitySpider)
↑实体类型,括号内为实体具体的类
        Entity ID: 4279
↑实体的ID(生成时自动分配)
        Entity Name: Spider
↑实体名称
        Entity's Exact location: -510.30, 38.00, -606.92
↑实体的精确坐标
        Entity's Block location: World: (-511,38,-607), Chunk: (at 1,2,1 in -32,-38; contains blocks -512,0,-608 to -497,255,-593),
Region: (-1,-2; contains chunks -32,-64 to -1,-33, blocks -512,0,-1024 to -1,255,-513)
↑实体所在的位置(包括方块位置、区块位置、Region位置)
        Entity's Momentum: -0.03, -1.25, -0.07
↑实体的动量
        Entity's Passengers: []
↑乘着实体的实体
        Entity's Vehicle: ~~ERROR~~ NullPointerException: null
↑实体乘着的实体(这里因为不存在而出现了NPE,即空指针异常)
(以下省略N行)
Loaded coremods (and transformers):
加载的核心mod(和transformers<-可以理解成修改class的玩意):
LoadingPlugin (Bloodmoon(血月)-MC1.12.2-1.5.3.jar)
  lumien.bloodmoon.asm.ClassTransformer
TheBetweenlandsLoadingPlugin (TheBetweenlands-3.4.9-core.jar)
  thebetweenlands.core.TheBetweenlandsClassTransformer
Do not report to Forge! (If you haven't disabled the FoamFix coremod, try disabling it in the config! Note that this bit of text will still appear.) ([优化]FoamFix-0.10.5.jar)
  pl.asie.foamfix.coremod.FoamFixTransformer
==========================================================
概览上面的崩溃报告,我们可以得到下列的关键信息:


1.        崩溃与wildnature这个mod有关
2.        找不到的是MC自身的方法
3.        崩溃是在实体掉落时发生的


由此可以得出解决办法:


1.        删除相关的核心mod看看是否恢复正常
2.        如果不是,删除该mod并反馈给作者


不过一般核心mod导致的这种问题很少在游戏时发生,所以此处直接删除了该mod

==========================================================

Forge也提供了一个自动删除出错实体的方法,但并不推荐使用,因为可能会导致数据丢失

在config\forge.cfg中
  1.     # Set this to true to remove any Entity that throws an error in its update method instead of closing the server and reporting a crash log. BE WARNED THIS COULD SCREW UP EVERYTHING USE SPARINGLY WE ARE NOT RESPONSIBLE FOR DAMAGES.
  2.         # 设置此项为true后,如果在调用某实体的更新方法时出现异常,则会以删除该实体的方式来防止服务器崩溃
  3.         # 警告:这个选项可以弄糟一切东西,我们不会为此选项带来的损失负责
  4.           B:removeErroringEntities=false

  5.     # Set this to true to remove any TileEntity that throws an error in its update method instead of closing the server and reporting a crash log. BE WARNED THIS COULD SCREW UP EVERYTHING USE SPARINGLY WE ARE NOT RESPONSIBLE FOR DAMAGES.
  6.         # 设置此项为true后,如果在调用某实体方块的更新方法时出现异常,则会以删除该实体方块的方式来防止服务器崩溃
  7.         # 警告:这个选项可以弄糟一切东西,我们不会为此选项带来的损失负责
  8.            B:removeErroringTileEntities=false
复制代码



特殊:字节码崩溃

前面提到,可以通过搜索E来看看出错的mod并删除,但这并不适用于字节码崩溃。
因为这个是因为调用了有问题的代码导致的,也就是说,其原因是核心mod把代码改坏了或JVM不兼容该代码:
下面是一个启动时的崩溃:
WARNING: coremods are present:
↓核心mod列表
  BetterFoliageLoader ([更好的叶子]BetterFoliage-MC1.12-2.1.10.jar)
  SSLoadingPlugin ([一年四季]SereneSeasons-1.12.2-1.2.15-universal.jar)
  CXLibraryCore ([前置-更大容量的箱子]cxlibrary-1.12.1-1.6.1.jar)
  DynamicSurroundingsCore (DynamicSurroundings-core-1.12.2-3.5.4.3.jar)
  Inventory Tweaks Coremod ([R键整理]InventoryTweaks-1.63.jar)
Contact their authors BEFORE contacting forge
(中间省略)
Description: Unexpected error
java.lang.VerifyError: Operand stack overflow
↑校验错误:操作数的堆栈溢出
Exception Details:
↑异常详细信息
  Location
:位置
↓一般来说,修改代码的时候会打印日志
↓我们需要在启动日志搜索这个类RenderChunk
↓如果搜索不到,请将核心mod一个个卸载尝试是否能够启动

net/minecraft/client/renderer/chunk/RenderChunk.func_178581_b(FFFLnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator;)V @542: aload
  Reason:
    Exceeded max stack size.

==========================================================

还有一个典型的让其他mod背黑锅的崩溃:
net.minecraftforge.fml.common.LoaderExceptionModCrash: Caught exception from Applied Energistics 2 (appliedenergistics2)
Caused by: java.lang.VerifyError: JVMVRFY012 堆栈形状不一致 类=net/minecraftforge/client/model/ModelLoader$VanillaModelWrapper,方法=getTextures()Ljava/util/Collection;,pc=14
(以下省略N行)
LCE   | appliedenergistics2        | rv5-stable-11                | appliedenergistics2-rv5-stable-11.jar             | None     


这里并不是AE2的问题,只是因为AE2调用了这个方法而已,这里根据https://github.com/AppliedEnergi ... stics-2/issues/3792知道是CTM的问题,更新新版本即可

这些崩溃一般是因为forge版本不兼容、安装了错误的mod版本等等导致的,如果更新所有核心mod后仍无法启动,建议将核心mod一个个卸载尝试是否能够启动


启动日志分析

在没有生成崩溃报告的情况下,我们需要查看日志,日志有六个等级,从上到下依次有:FATAL(致命)、ERROR(错误)、WARN(警告)、INFO(信息)、TRACE(追踪),一般来说,日志只会输出INFO等级及以上的信息。
日志一般位于logs(客户端在.minecraft\logs)文件夹下,有latest.log(最新日志)和debug.log(debug日志)
对于旧版本,还根据阶段和内容分开了日志,有
fml-junk-earlystartup.log(FML启动早期的输出,正如其名,是无用日志)
fml-server/client -x.log(x为分卷数字,FML服务器/客户端的之前的日志输出)
fml-server/client -latest.log(FML服务器/客户端的最新日志输出)
latest.log(原版服务器/客户端的日志输出)
FML:全称为Forge mod Loader,就是加载mod的玩意

在看日志的时候,不能断章取义,只看SEVERE和WARNING级别,而应该联系上下文(Registering->注册,Discovering->寻找,Inspecting->查看,Ignoring->忽略):

[16:21:01] [main/INFO]: Registering discovery module EnumeratorModuleClassPath: [<Java Class Path>]  
[16:21:01] [main/INFO]: Registering discovery module EnumeratorModuleFolder: [D:\mc\应用\.minecraft\mods]  
[16:21:01] [main/INFO]: Registering discovery module EnumeratorModuleFolder: [D:\mc\应用\.minecraft\mods\1.12.2]  
[16:21:01] [main/INFO]: Registering enumerator plugin DefaultEnumeratorPlugin: [com.mumfrey.liteloader.core.api.DefaultEnumeratorPlugin@273c947f]  
=================寻找mod阶段======================
[16:21:01] [main/INFO]: Discovering valid mod files in folder D:\mc\应用\.minecraft\mods  
[16:21:01] [main/INFO]: Inspecting jar metadata in 'Decocraft-2.6.0_1.12.2.jar'  
[16:21:01] [main/INFO]: Ignoring D:\mc\应用\.minecraft\mods\Decocraft-2.6.0_1.12.2.jar  
[16:21:01] [main/INFO]: Inspecting jar metadata in 'Flan's Mod-1.12.2-5.5.2.jar'  
[16:21:01] [main/INFO]: Ignoring D:\mc\应用\.minecraft\mods\Flan's Mod-1.12.2-5.5.2.jar  
[16:21:01] [main/INFO]: Inspecting jar metadata in 'jei_1.12.2-4.13.1.225.jar'  
[16:21:01] [main/INFO]: Ignoring D:\mc\应用\.minecraft\mods\jei_1.12.2-4.13.1.225.jar  
[16:21:01] [main/INFO]: Inspecting jar metadata in 'journeymap-1.12-5.4.9.jar'  
[16:21:01] [main/INFO]: Ignoring D:\mc\应用\.minecraft\mods\journeymap-1.12-5.4.9.jar  
[16:21:01] [main/INFO]: Inspecting jar metadata in 'lostcities-1.12-2.0.17.jar'  
[16:21:01] [main/INFO]: Ignoring D:\mc\应用\.minecraft\mods\lostcities-1.12-2.0.17.jar  
[16:21:01] [main/INFO]: Inspecting jar metadata in 'NGTLib2.4.3-20_forge-1.12.2-14.23.2.2611.jar'  
[16:21:01] [main/INFO]: Ignoring D:\mc\应用\.minecraft\modsundefinedGTLib2.4.3-20_forge-1.12.2-14.23.2.2611.jar  
[16:21:01] [main/INFO]: Inspecting jar metadata in 'PTRLib-1.0.2.jar'  
[16:21:01] [main/INFO]: Ignoring D:\mc\应用\.minecraft\mods\PTRLib-1.0.2.jar  
[16:21:01] [main/INFO]: Inspecting jar metadata in 'RTM2.4.4-23_forge-1.12.2-14.23.2.2611.jar'  
[16:21:01] [main/INFO]: Ignoring D:\mc\应用\.minecraft\mods\RTM2.4.4-23_forge-1.12.2-14.23.2.2611.jar  
[16:21:01] [main/INFO]: Inspecting jar metadata in '【自定义人物】CustomNPCs_1.12.2(26aug18).jar'  
[16:21:01] [main/INFO]: Ignoring D:\mc\应用\.minecraft\mods\【自定义人物】CustomNPCs_1.12.2(26aug18).jar  
[16:21:01] [main/INFO]: Discovering valid mod files in folder D:\mc\应用\.minecraft\mods\1.12.2  
[16:21:01] [main/INFO]: Discovering tweaks on class path...  
=================加载mod阶段======================
[16:21:02] [main/INFO]: Baking listener list for EnumerationObserver with 1 listeners  
[16:21:02] [main/INFO]: Registering discovered mod files in folder D:\mc\应用\.minecraft\mods  
[16:21:02] [main/INFO]: Registering discovered mod files in folder D:\mc\应用\.minecraft\mods\1.12.2  
[16:21:02] [main/INFO]: Initialising LiteLoader Mixins  
[16:21:02] [main/INFO]: Compatibility level set to JAVA_8  
[16:21:02] [main/INFO]: LiteLoader PREINIT complete  
==========注入tweaker(可以理解为改代码的玩意)阶段============
[16:21:02] [main/INFO]: Injecting required class transformer 'com.mumfrey.liteloader.transformers.event.EventProxyTransformer'  
[16:21:02] [main/INFO]: Injecting required class transformer 'com.mumfrey.liteloader.launch.LiteLoaderTransformer'  
[16:21:02] [main/INFO]: Injecting required class transformer 'com.mumfrey.liteloader.client.transformers.CrashReportTransformer'  
[16:21:02] [main/INFO]: Queuing required class transformer 'com.mumfrey.liteloader.transformers.event.EventTransformer'  
[16:21:02] [main/INFO]: Queuing required class transformer 'com.mumfrey.liteloader.common.transformers.LiteLoaderPacketTransformer'  
[16:21:02] [main/INFO]: Queuing required class transformer 'com.mumfrey.liteloader.transformers.event.json.ModEventInjectionTransformer'  
[16:21:02] [main/INFO]: Calling tweak class optifine.OptiFineForgeTweaker  
[16:21:02] [main/INFO]: [optifine.OptiFineForgeTweaker:dbg:56]: OptiFineForgeTweaker: acceptOptions  
[16:21:02] [main/INFO]: [optifine.OptiFineForgeTweaker:dbg:56]: OptiFineForgeTweaker: injectIntoClassLoader  
[16:21:02] [main/INFO]: [optifine.OptiFineClassTransformer:dbg:221]: OptiFine ClassTransformer  
[16:21:02] [main/INFO]: [optifine.OptiFineClassTransformer:dbg:221]: OptiFine ZIP file: E:\hmcldownloads\librariesundefinedet\optifine\optifine\1.12.2-HD_U_E4_pre1\optifine-1.12.2-HD_U_E4_pre1.jar  
[16:21:02] [main/INFO]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker  
[16:21:02] [main/INFO]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLDeobfTweaker  
[16:21:02] [main/INFO]: Loading tweak class name org.spongepowered.asm.launch.MixinTweaker  
[16:21:02] [main/INFO]: Loading tweak class name org.spongepowered.asm.mixin.EnvironmentStateTweaker  
[16:21:02] [main/INFO]: Loading tweak class name com.mumfrey.liteloader.launch.LiteLoaderTweaker$PreInitTweaker  
[16:21:02] [main/INFO]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker  
[16:21:02] [main/INFO]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker  
[16:21:02] [main/INFO]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper
=================文件校验开始====================
[16:21:07] [main/INFO]: Found valid fingerprint for Minecraft Forge. Certificate fingerprint e3c3d50c7c986df74c645c0ac54639741c90a557  
[16:21:07] [main/INFO]: Found valid fingerprint for Minecraft. Certificate fingerprint cd99959656f753dc28d863b46769f7f8fbaefcfc  
============文件校验结束,开始进行代码修改=============
[16:21:07] [main/INFO]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper  
[16:21:07] [main/INFO]: Calling tweak class org.spongepowered.asm.launch.MixinTweaker  
[16:21:07] [main/INFO]: Initialised Mixin FML Remapper Adapter with net.minecraftforge.fml.common.asm.transformers.deobf.FMLDeobfuscatingRemapper@36b9cb99  
[16:21:07] [main/INFO]: Calling tweak class org.spongepowered.asm.mixin.EnvironmentStateTweaker  
[16:21:07] [main/INFO]: Calling tweak class com.mumfrey.liteloader.launch.LiteLoaderTweaker$PreInitTweaker  
[16:21:07] [main/INFO]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLDeobfTweaker  
[16:21:08] [main/INFO]: Loading tweak class name net.minecraftforge.fml.common.launcher.TerminalTweaker  
[16:21:08] [main/WARN]: Tweak class name org.spongepowered.asm.mixin.EnvironmentStateTweaker has already been visited -- skipping  
[16:21:08] [main/INFO]: Calling tweak class net.minecraftforge.fml.common.launcher.TerminalTweaker  
[16:21:08] [main/INFO]: [optifine.OptiFineForgeTweaker:dbg:56]: OptiFineForgeTweaker: getLaunchArguments  
[16:21:09] [main/INFO]: Launching wrapped minecraft {net.minecraft.client.main.Main}  
[16:21:09] [main/INFO]: Injecting downstream transformers  
[16:21:09] [main/INFO]: Injecting additional class transformer class 'com.mumfrey.liteloader.transformers.event.EventTransformer'  
[16:21:09] [main/INFO]: Injecting additional class transformer class 'com.mumfrey.liteloader.common.transformers.LiteLoaderPacketTransformer'  
[16:21:09] [main/INFO]: Injecting additional class transformer class 'com.mumfrey.liteloader.transformers.event.json.ModEventInjectionTransformer'  
[16:21:09] [main/INFO]: FML detected, switching to searge mappings  


↓此处为错误出现点,是崩溃的原因↓

[16:21:11] [main/ERROR]: Unable to launch


↓此处为异常链,这是二级异常,我们从最底层往上看↓

java.lang.reflect.InvocationTargetException: null  
↑直接看异常名:调用目标(Invocation Target)的异常,后面的详细信息为null,说明没有指定信息,需要往下看

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_60]  
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_60]  
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_60]  
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_60]  
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]  
at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]  


Caused by: joptsimple.MultipleArgumentsForOptionException: Found multiple arguments for option width, but you asked for only one  

↑最低级异常已给出原因:Found multiple arguments for option width, but you asked for only one,翻译为:你给出的参数width有两个,但这里只能有一个。这里说的是启动参数,我们搜索arguments,发现与Optifine有关系,这里最终的原因是因为Liteloader和Optifine传递的启动参数重复了,所以不能同时使用--tweakclass参数加载的方式共存,需要将Optifine放在mods文件夹内以mod形式加载(感谢@gooding300 的纠正与解惑)
(以下省略N行)

Exception in thread "main" (在main线程发生异常)

插件报错分析


一般来说,插件报错都是配置问题,如果配置有错误,会在加载时给予提醒,比如最常见的编码错误:
[Server thread/ERROR]: Cannot load pluginsundefinedeverLag\config.yml
org.bukkit.configuration.InvalidConfigurationException:
unacceptable character '?' (0xD9A6) special characters are not allowed in "'string'", position 1660(在第1660个字符发现无法解析的字符'?' (0xD9A6),string类型不允许使用特殊字符)
at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:56) ~[patched_1.10.2.jar:git-Paper-817]
……(省略)


还有与插件事件有关的错误:

[22:20:28 ERROR]: Could not pass event InventoryClickEvent to Jobs v4.11.1(无法将事件InventoryClickEvent传递给插件Jobs v4.11.1)
org.bukkit.event.EventException←第二级异常
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
va:338) ~[JavaPluginLoader$1.class:1.7.10-R0.1-SNAPSHOT]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
a:62) ~[RegisteredListener.class:1.7.10-R0.1-SNAPSHOT]
……(省略)

Caused by(意思为原因为,是异常链的标志):
java.lang.NoSuchMethodError: org.bukkit.event.inventory.InventoryClic
kEvent.getClickedInventory()Lorg/bukkit/inventory/Inventory; ←第一级异常
at com.gamingmesh.jobs.listeners.JobsListener.onInventoryClick(JobsListe
ner.java:819) ~[?:?]
……(省略)

对于异常链,从下到上看,最下的是最低级的异常
这些报错的分析方法与上文分析客户端崩溃的方法基本相同

Watchdog报错分析

Watchdog报错在低配置服务器特别常见,比如Paper核心的特色报错(服务器未响应时dump一下服务器主线程,帮助分析卡服原因):

[Paper Watchdog Thread/ERROR]: --- DO NOT REPORT THIS TO PAPER - THIS IS NOT A BUG OR A CRASH ---
(不要报告给Paper开发者——这不是Bug或报错!!!)
[Paper Watchdog Thread/ERROR]: The server has not responded for 35 seconds! Creating thread dump
(服务器已停止响应35秒!正在创建线程dump)
[Paper Watchdog Thread/ERROR]: ------------------------------
[Paper Watchdog Thread/ERROR]: Server thread dump (Look for plugins here before reporting to Paper!):
[15:08:53] [Paper Watchdog Thread/ERROR]:                 java.net.SocketInputStream.socketRead0(Native Method)
[15:08:53] [Paper Watchdog Thread/ERROR]:                 java.net.SocketInputStream.socketRead(Unknown Source)
[15:08:53] [Paper Watchdog Thread/ERROR]:                 java.net.SocketInputStream.read(Unknown Source)
[15:08:53] [Paper Watchdog Thread/ERROR]:                 java.net.SocketInputStream.read(Unknown Source)
[15:08:53] [Paper Watchdog Thread/ERROR]:                 sun.security.ssl.InputRecord.readFully(Unknown Source)
[15:08:53] [Paper Watchdog Thread/ERROR]:                 sun.security.ssl.InputRecord.readV3Record(Unknown Source)
[15:08:53] [Paper Watchdog Thread/ERROR]:                 sun.security.ssl.InputRecord.read(Unknown Source)
[15:08:53] [Paper Watchdog Thread/ERROR]:                 sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
[15:08:53] [Paper Watchdog Thread/ERROR]:                 sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
[15:08:53] [Paper Watchdog Thread/ERROR]:                 sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
[15:08:53] [Paper Watchdog Thread/ERROR]:                 sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
[15:08:53] [Paper Watchdog Thread/ERROR]:                 sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
[15:08:53] [Paper Watchdog Thread/ERROR]:                 sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
[15:08:53] [Paper Watchdog Thread/ERROR]:                 sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
[15:08:53] [Paper Watchdog Thread/ERROR]:                 sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
[15:08:53] [Paper Watchdog Thread/ERROR]:                 sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
[15:08:53] [Paper Watchdog Thread/ERROR]:                 com.mojang.authlib.HttpAuthenticationService.performGetRequest(HttpAuthenticationService.java:130)
[15:08:53] [Paper Watchdog Thread/ERROR]:                 com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService.makeRequest(YggdrasilAuthenticationService.java:66)
[15:08:53] [Paper Watchdog Thread/ERROR]:                 com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService.fillGameProfile(YggdrasilMinecraftSessionService.java:180)
[15:08:53] [Paper Watchdog Thread/ERROR]:                 com.destroystokyo.paper.profile.PaperMinecraftSessionService.fillGameProfile(PaperMinecraftSessionService.java:35)
[15:08:53] [Paper Watchdog Thread/ERROR]:                 com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService.fillProfileProperties(YggdrasilMinecraftSessionService.java:173)
[15:08:53] [Paper Watchdog Thread/ERROR]:                 com.destroystokyo.paper.profile.PaperMinecraftSessionService.fillProfileProperties(PaperMinecraftSessionService.java:28)
[15:08:53] [Paper Watchdog Thread/ERROR]:                 net.minecraft.server.v1_12_R1.TileEntitySkull$1.load(TileEntitySkull.java:79)
[15:08:53] [Paper Watchdog Thread/ERROR]:                 net.minecraft.server.v1_12_R1.TileEntitySkull$1.load(TileEntitySkull.java:46)




还有就是真正停止响应的报错(此时会强制停止服务器):

The server has stopped responding!
[07:31:15] [Spigot Watchdog Thread/ERROR]: Please report this to http://www.spigotmc.org/
[07:31:15] [Spigot Watchdog Thread/ERROR]: Be sure to include ALL relevant console errors and Minecraft crash reports
[07:31:15] [Spigot Watchdog Thread/ERROR]: Spigot version: git-Spigot-642f6d2-57ab4cf (MC: 1.12.2)
[07:31:15] [Spigot Watchdog Thread/ERROR]: ------------------------------
[07:31:15] [Spigot Watchdog Thread/ERROR]: Server thread dump (Look for plugins here before reporting to Spigot!):
[07:31:15] [Spigot Watchdog Thread/ERROR]: ------------------------------
[07:31:15] [Spigot Watchdog Thread/ERROR]: Current Thread: Server thread(服务器主线程)
[07:31:15] [Spigot Watchdog Thread/ERROR]:         PID: 18 | Suspended(是否挂起): false | Native(是否为本地线程): false | State(状态): WAITING
[07:31:15] [Spigot Watchdog Thread/ERROR]:         Stack:
[07:31:15] [Spigot Watchdog Thread/ERROR]:                 java.lang.Object.wait(Native Method)
[07:31:15] [Spigot Watchdog Thread/ERROR]:                 java.lang.Thread.join(Thread.java:1252)
[07:31:15] [Spigot Watchdog Thread/ERROR]:                 java.lang.Thread.join(Thread.java:1326)
[07:31:15] [Spigot Watchdog Thread/ERROR]:                 com.wasteofplastic.acidisland.Updater.waitForThread(Updater.java:361)
[07:31:15] [Spigot Watchdog Thread/ERROR]:                 com.wasteofplastic.acidisland.Updater.getResult(Updater.java:302)
[07:31:15] [Spigot Watchdog Thread/ERROR]:                 com.wasteofplastic.acidisland.ASkyBlock.checkUpdatesNotify(ASkyBlock.java:579)
(以下线程信息省略)
[07:31:15] [Spigot Watchdog Thread/INFO]: Startup script './start.sh' does not exist! Stopping server.
[07:31:15] [Spigot Watchdog Thread/INFO]: Stopping server




对于这类报错,与客户端的分析方式也相同,但主要分析服务器主线程,一步步顺藤摸瓜找原因,这需要了解java相关的类库和相关的线程知识,但对于这些命名规范的包名、类名和方法名来说,你知道专有名词的意思也能猜个八 九不离十:




Paper核心的特色报错:TileEntitySkull load(实体方块头颅加载?)-> Yggdrasil fillGameProfile(玩家游戏信息?)-> makeRequest(发送请求?)-> net read ssl(看样子在联网)

联想:看起来是一个头颅加载皮肤时联网获取皮肤引起的卡顿,为正常现象

停止响应的报错:checkUpdatesNotify(检查更新啊)->状态为WAITING(在等东西)->com.wasteofplastic.acidisland.Updater.wait(下面是一个插件的包名,应该是酸岛插件的问题)
联想:应该是网络原因,禁止酸岛插件的检查更新就行了



在这里安利一下服务器监控插件
yum,可以很快捷地知道在主线程的网络操作

对于非上述类型的watchdog报错,一般是因为服务器配置较低或者代码较为低效,导致处理时间过长而关闭服务器,可以通过直接禁用Watchdog功能避免此问题。

对于旧版本,可以在server.properties中将max-tick-time设置为-1


而对于新版本,可以在spigot.yml中将timeout-time设置为一个比较大的值


同时,建议进行服务器的优化,可以看看这两篇优化教程:


【优化】服务器优化指南 | 和卡顿永远说再见

https://www.mcbbs.net/thread-774469-1-1.html


Minecraft服务器优化教程 —— 让多带50%的玩家不再是梦
https://www.mcbbs.net/thread-478126-1-1.html


也可以深入了解服务器配置文件,实现更加深度的优化:
https://www.mcbbs.net/thread-872611-1-1.html



Java虚拟机崩溃分析

这类报错较少见,但仍有发生,一般为显卡驱动bug、内存不足导致,有时也会由内存损坏等硬件问题导致,这类报错的文件命名为hs_err_pidxxxx.log,并位于.minecraft或服务器根目录下:
这里看看一个dll引起的报错:
##JRE检测到了一个致命错误:
## A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00000000693878bd, pid=7392, tid=0x0000000000001f84←异常类型,这个需要搜索解决方案
#
# JRE version: Java(TM) SE Runtime Environment (8.0_211-b12) (build 1.8.0_211-b12)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.211-b12 mixed mode windows-amd64 compressed oops)
# Problematic frame(产生问题的帧):
# C  [sqlite-3.7.2-sqlitejdbc.dll+0x478bd]←主要分析这个dll是干嘛的,搜索一下,更新与其相关的东西
#
# Core dump written. Default location: D:\qiyuan\qiyuan\hs_err_pid7392.mdmp
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
#
#这个崩溃发生在JVM的本地代码之外
#请查看产生问题的帧以汇报问题

# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
(中间省略,直接看Java的堆,此处分析方式与一般报错分析相同)
Stack: [0x0000000066f60000,0x0000000067060000],  sp=0x000000006705ee30,  free space=1019k
J=compiled Java code(已编译的java代码), j=interpreted(已解释), Vv=VM code(虚拟机代码), C=native code(本地代码)
Native frames(本地代码帧):  C  [sqlite-3.7.2-sqlitejdbc.dll+0x478bd]
Java frames(Java代码帧):  
J 21524  org.sqlite.NativeDB.reset(J)I (0 bytes) @ 0x0000000005a9543b [0x0000000005a95400+0x3b]
J 24085 C1 org.sqlite.RS.close()V (81 bytes) @ 0x00000000065ff274 [0x00000000065ff040+0x234]
j  org.sqlite.PrepStmt.executeUpdate()I+25
j  fr.xephi.authme.datasource.SQLite.setUnlogged(Ljava/lang/String;)V+94←可知为Authme的数据库操作
j  fr.xephi.authme.datasource.CacheDataSource.setUnlogged(Ljava/lang/String;)V+8
j  fr.xephi.authme.process.quit.AsynchronousQuit.processQuit(Lorg/bukkit/entity/Player;)V+176
j  fr.xephi.authme.process.Management.lambda$performQuit$7(Lorg/bukkit/entity/Player;)V+5
j  fr.xephi.authme.process.Management$$Lambda$63.run()V+8
J 35531 C2 org.bukkit.craftbukkit.v1_7_R4.scheduler.CraftAsyncTask.run()V (532 bytes) @ 0x000000000963e584 [0x000000000963e340+0x244]
J 32137 C2 java.util.concurrent.ThreadPoolExecutor.runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V (225 bytes) @ 0x0000000005449340 [0x0000000005448d60+0x5e0]
j  java.util.concurrent.ThreadPoolExecutor$Worker.run()V+5
j  java.lang.Thread.run()V+11
v  ~StubRoutines::call_stub


这里的解决方式是重置数据库,有的时候这类问题也与内存损坏有关联

下面是物理内存不足的报错:
#
# There is insufficient memory for the Java Runtime Environment to continue.
#因所需的内存不足,JRE无法继续运行
# Native memory allocation (mmap) failed to map 352321536 bytes for Failed to commit area from 0x00000000dd000000 to 0x00000000f2000000 of length 352321536.
#因为无法提交从0x00000000dd000000到0x00000000f2000000地址,长度为352321536的区域,本地内存分配器(mmap)无法映射352321536个字节
# Possible reasons:
#可能的原因
#   The system is out of physical RAM or swap space
#   系统物理内存或交换空间不足
#   The process is running with CompressedOops enabled, and the Java Heap may be blocking the growth of the native heap
#  这个进程运行时启用了CompressedOops参数,Java堆内存可能阻止了本地内存的增长
# Possible solutions:
# 可能的解决方案:
#   Reduce memory load on the system
#   减少系统所占用的内存
#   Increase physical memory or swap space
#   增加物理内存或交换空间
#   Check if swap backing store is full
#   查看交换的backing store是否已满
#   Decrease Java heap size (-Xmx/-Xms)
#   减少Java的堆内存(参数为-Xmx/-Xms)注:这里是减少启动器设置的内存
#   Decrease number of Java threads
#   减少Java的线程数
#   Decrease Java thread stack sizes (-Xss)
#  减少Java的线程堆栈大小(参数为-Xss)
#   Set larger code cache with -XX:ReservedCodeCacheSize=
#  用-XX:ReservedCodeCacheSize=参数将代码缓存设置得更大
#   JVM is running with Unscaled Compressed Oops mode in which the Java heap is
#     placed in the first 4GB address space. The Java Heap base address is the
#     maximum limit for the native heap growth. Please use -XX:HeapBaseMinAddress
#     to set the Java Heap base and to place the Java Heap above 4GB virtual address.
#JVM运行在未缩放的压缩指针模式时,JAVA堆会被放在
#初始的4GB地址空间内,Java堆的基本地址是本地堆增长的最大限制
#请使用-XX:HeapBaseMinAddress来将Java堆的基本地址放置在4GB的虚拟内存地址之内

# This output file may be truncated or incomplete.
#
#  Out of Memory Error (os_windows.cpp:3371), pid=7780, tid=0x00000000000002f4
#


按上面的解决方案来就行了


总结



0.遇到问题,第一个做的应该是更新对应mod,因为这些问题可能已经在新版本中被解决。
1.报错并不可怕,你需要做的是认真分析报错,找到相关原因,一步步解决。
2.遇到莫名其妙、无法分析的错误时,可以在mojang的问题追踪器(https://bugs.mojang.com/)、spigot和forge论坛、Github上搜索一下,那里可能已经有了解决方案。
3.搜索请搜索特别的词,如异常+描述信息(即第一行的内容)
4.如果实在不能解决,建议到对应问题mod的反馈处反馈(如果你会英文的话)。

附录

常见崩溃

建议配合


https://www.mcbbs.net/thread-516637-1-1.html
https://www.mcbbs.net/thread-860103-1-1.html
https://www.mcbbs.net/thread-729487-1-1.html


食用


java.lang.IllegalStateException: failed to create a child event loop
Caused by: io.netty.channel.ChannelException: failed to open a new selector
Caused by: java.io.IOException: Unable to establish loopback connection
Caused by: java.net.SocketException: No buffer space available (maximum connections reached?): bind


解决办法:如果不是vps,你可以拿着这个崩溃日志去找服务商

如果是vps,请检查你的后台进程是否正常,可能是中毒了
原因解释:
https://blog.csdn.net/itxiaohei323/article/details/8280702
https://blog.csdn.net/yzy199391/article/details/78911329



java.lang.IllegalArgumentException: Cannot get property PropertyEnum{name=variant, clazz=class vazkii.botania.api.state.enums.PoolVariant, values=[DEFAULT, CREATIVE, DILUTED, FABULOUS]} as it does not exist in BlockStateContainer{block=minecraft:air, properties=[]}

解决办法:卸载voxelmap并替换为其他的小地图mod



com.google.gson.JsonSyntaxException: java.io.EOFException: End of input at line 8 column 5
        at com.google.gson.Gson.fromJson(Gson.java:813)
        at com.google.gson.Gson.fromJson(Gson.java:768)
        at net.minecraft.server.management.UserList.func_152679_g(UserList.java:202)

解决办法:手动打开usercache.json进行修复



java.lang.UnsatisfiedLinkError:xxxxx\xxx.dll

解决办法:请补上xxxx路径的dll,相关dll应该在对应的mod文件夹内



cpw.mods.fml.common.LoaderException: java.lang.NoClassDefFoundError: scala/collection/Seq(或者带有trove4j)

解决办法:库文件缺失,请重新安装forge



报错一:org.lwjgl.LWJGLException: SetPixelFormat failed (-1073281958)
报错二:java.lang.IllegalStateException: GLFW error 65542: WGL: The driver does not appear to support OpenGL
报错三:org.lwjgl.LWJGLException: Pixel format not accelerated

解决办法:用驱动精灵之类的东西更新显卡驱动,如果已经是最新,请前往对应的笔记本制造商官网下载驱动,如果仍提示报错二,请按下述教程操作:

解决1代及2代Intel核显在Win10下无法使用OpenGL的问题
https://www.liyanfeng.com/post/113.html



java.lang.OutOfMemoryError: unable to create new native thread

解决方法:在JVM参数中加入-Xss1M



java.lang.IllegalAccessError: tried to access class cofh.api.transport.IEnderAttuned from class cofh.lib.transport.EnderRegistry

解决方法:用压缩包打开非cofhteam自家mod(指除了热力膨胀以及其扩展、cothcore的mod)并删除cofh文件夹(记得删除前备份!)



Unsupported major.minor version 52.0

解决方法:请使用java8



java.lang.IllegalArgumentException: Could not get provider type for dimension -xxx, does not exist

解决方法:维度ID xxx冲突导致无法加载对应世界,请在配置文件进行维度ID的修改




更新日志:

2019-8-20

1.删除了字节码崩溃中的误导内容
2.补充了例子的解决办法

2019-8-4

1.大幅添加内容,完成剩余内容的更新
2.使用了更准确的翻译

2019-6-10

初次发布