You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Minecraft Fabric模组经Proguard混淆后invoke调用报错如何解决?

问题原因

这个报错是Proguard混淆工具的已知bug,和事件系统、模组业务逻辑没有关系。
你使用的Java 7+ 多异常捕获语法catch (InvocationTargetException | IllegalAccessException e)在搭配类重打包(也就是你配置的将所有类重打包到dev.mistercow1.minecraftmod目录)的场景下,部分版本的Proguard会错误修改异常变量的类型标记,把原本的异常类类型错误标记为java.lang.Object,导致JVM加载类的时候校验不通过,抛出你看到的VerifyError。

解决方案

你可以任选以下一种方案修复:

  • 拆分多异常捕获块,把合并的catch拆分为两个独立的catch块,不需要修改任何混淆配置即可生效:
catch (InvocationTargetException e)
{
    e.printStackTrace();
}
catch (IllegalAccessException e)
{
    e.printStackTrace();
}
  • 升级Proguard到7.2.0及以上版本,该版本已经修复了多异常捕获搭配类重打包的类型处理bug。
  • 在Proguard配置中添加核心反射异常类的保留规则,避免混淆破坏异常类的继承关系:
-keep class java.lang.ReflectiveOperationException { *; }
-keep class * extends java.lang.ReflectiveOperationException { *; }

你之前修改invoke调用参数的操作没有效果,是因为报错实际发生在catch块的异常处理逻辑,和反射调用本身无关。


内容的提问来源于stack exchange,提问作者MisterCow1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 08:36:04