首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用VerifyError代理重新定义Spigot类时的ByteBuddy

使用VerifyError代理重新定义Spigot类时的ByteBuddy
EN

Stack Overflow用户
提问于 2021-11-14 12:31:42
回答 1查看 210关注 0票数 3

我目前正在尝试重新定义spigot中的CraftPlayer类,以添加更多的事件。我使用Buddy和ASM使用实用程序类来编辑类。但是,即使在运行CraftPlayer::class.java.redefine { } (它根本不改变类)时,我也会得到一个没有任何消息的java.lang.VerifyError

我尝试在其他大型复杂类上运行相同的代码,但没有出现错误。这些类与CraftPlayer之间唯一的区别是它们没有任何内部类。

完全例外:

代码语言:javascript
复制
java.lang.VerifyError: null
        at sun.instrument.InstrumentationImpl.redefineClasses0(Native Method) ~[?:?]
        at sun.instrument.InstrumentationImpl.redefineClasses(InstrumentationImpl.java:194) ~[?:?]
        at xyz.xenondevs.lib.bytebase.RuntimeUtilsKt.insertInstructions$redefineClasses(RuntimeUtils.kt:41) ~[?:?]
        at xyz.xenondevs.lib.bytebase.RuntimeUtilsKt.access$insertInstructions$redefineClasses(RuntimeUtils.kt:1) ~[?:?]
        at xyz.xenondevs.lib.bytebase.RuntimeUtilsKt$insertInstructions$2.invoke(RuntimeUtils.kt:41) ~[?:?]
        at xyz.xenondevs.lib.bytebase.RuntimeUtilsKt$insertInstructions$2.invoke(RuntimeUtils.kt:41) ~[?:?]
        at xyz.xenondevs.lib.bytebase.RuntimeUtilsKt$sam$java_util_function_Consumer$0.accept(RuntimeUtils.kt) ~[?:?]
        at java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?]
        at xyz.xenondevs.lib.bytebase.RuntimeUtilsKt.insertInstructions(RuntimeUtils.kt:41) ~[?:?]
        at xyz.xenondevs.test.TestPlugin.onEnable(TestPlugin.kt:11) ~[?:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264) ~[spigot-1.17.1.jar:3241-Spigot-6c1c1b2-1492826]
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:342) ~[spigot-1.17.1.jar:3241-Spigot-6c1c1b2-1492826]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:480) ~[spigot-1.17.1.jar:3241-Spigot-6c1c1b2-1492826]
        at org.bukkit.craftbukkit.v1_17_R1.CraftServer.enablePlugin(CraftServer.java:511) ~[spigot-1.17.1.jar:3241-Spigot-6c1c1b2-1492826]
        at org.bukkit.craftbukkit.v1_17_R1.CraftServer.enablePlugins(CraftServer.java:425) ~[spigot-1.17.1.jar:3241-Spigot-6c1c1b2-1492826]
        at net.minecraft.server.MinecraftServer.loadWorld(MinecraftServer.java:619) ~[spigot-1.17.1.jar:3241-Spigot-6c1c1b2-1492826]
        at net.minecraft.server.dedicated.DedicatedServer.init(DedicatedServer.java:266) ~[spigot-1.17.1.jar:3241-Spigot-6c1c1b2-1492826]
        at net.minecraft.server.MinecraftServer.x(MinecraftServer.java:1010) ~[spigot-1.17.1.jar:3241-Spigot-6c1c1b2-1492826]
        at net.minecraft.server.MinecraftServer.lambda$0(MinecraftServer.java:305) ~[spigot-1.17.1.jar:3241-Spigot-6c1c1b2-1492826]
        at java.lang.Thread.run(Thread.java:831) [?:?]

我正在运行Java 16 build 16.0.1+9-24

为什么JVM无法验证CraftPlayer类,即使什么都没有改变?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-10 14:57:27

似乎是JVM/asm的错误。刚刚用Java 17再次尝试了它,并更新了依赖项,但是代码完全相同,现在看来它已经开始工作了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69963005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档