Hueihuea
本帖最后由 Hueihuea 于 2020-3-30 15:31 编辑

进行字节码操作只要使用ClassWriter.COMPUTE_FRAMES就会发生以下报错

  1. ClassNode classNode = new ClassNode(Opcodes.ASM5);
  2. ClassReader classReader = new ClassReader(basicClass);
  3. classReader.accept(classNode, 0);
  4. ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
  5. classNode.accept(classWriter);
  6. return classWriter.toByteArray();
复制代码

  1. Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: net.minecraft.client.renderer.entity.Render
  2.         at org.objectweb.asm.ClassWriter.getCommonSuperClass(Unknown Source)
  3.         at org.objectweb.asm.ClassWriter.a(Unknown Source)
  4.         at org.objectweb.asm.Frame.a(Unknown Source)
  5.         at org.objectweb.asm.Frame.a(Unknown Source)
  6.         at org.objectweb.asm.MethodWriter.visitMaxs(Unknown Source)
  7.         at org.objectweb.asm.tree.MethodNode.accept(Unknown Source)
  8.         at org.objectweb.asm.tree.MethodNode.accept(Unknown Source)
  9.         at org.objectweb.asm.tree.ClassNode.accept(Unknown Source)
  10.         at mchhui.customnpcsfix.coremod.noppes.npcs.client.renderer.RenderCustomNpcTansfromer.transform(RenderCustomNpcTansfromer.java:61)
  11.         at net.minecraftforge.fml.common.asm.ASMTransformerWrapper$TransformerWrapper.transform(ASMTransformerWrapper.java:256)
  12.         ... 44 more
复制代码


是否是因为运行早于forge进行反混淆
确实如此?
重写getCommonSuperClass解决

所以有没有人教教我这是什么原因产生的
为什么用srg名找不到类 forge不应该在我之前就把notch名转成srg名了吗



lq2007
同遇到过,仅使用COMPUTE_MAX正常。。。具体原理我也不知道,或许COMPUTE_FRAME时候会加载对应的类?

第一页 上一页 下一页 最后一页