Skip to content

Fix ClassLoader NoClassDefFoundError#6

Merged
KabanFriends merged 1 commit intoIroriPowered:masterfrom
Xytronix:fix/classloader-noclassdef-fallback
Feb 28, 2026
Merged

Fix ClassLoader NoClassDefFoundError#6
KabanFriends merged 1 commit intoIroriPowered:masterfrom
Xytronix:fix/classloader-noclassdef-fallback

Conversation

@Xytronix
Copy link
Contributor

@Xytronix Xytronix commented Feb 27, 2026

Summary

When HyinitClassLoader.tryLoadClass finds class bytes and calls defineClass, it can throw a NoClassDefFoundError if the class's superclass/interfaces can't be resolved. This propagates past PluginClassLoader.loadClass0's catch (ClassNotFoundException), killing the entire fallback chain even when the class exists in the plugin jar.

Related issues

[[2026/02/27 02:38:17 SEVERE]            [MyHtalePlugin|P] Failed to setup plugin com.example.hytale.platform:MyHtalePlugin
java.lang.NoClassDefFoundError: io/lettuce/core/pubsub/RedisPubSubAdapter
        at java.base/java.lang.ClassLoader.defineClass1(Native Method)
        at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:962)
        at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:144)
        at cc.irori.hyinit.mixin.HyinitClassLoader.tryLoadClass(HyinitClassLoader.java:236)
        at cc.irori.hyinit.mixin.HyinitClassLoader.loadClass(HyinitClassLoader.java:158)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490)
        at Hyinit//com.hypixel.hytale.server.core.plugin.PluginClassLoader.loadClass0(PluginClassLoader.java:94)
        at Hyinit//com.hypixel.hytale.server.core.plugin.PluginClassLoader.loadClass(PluginClassLoader.java:79)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490)
...
Caused by: java.lang.ClassNotFoundException: io.lettuce.core.pubsub.RedisPubSubAdapter
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:580)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490)
        at cc.irori.hyinit.mixin.HyinitClassLoader.loadClass(HyinitClassLoader.java:166)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490)
        ... 29 more](url)

Type of change

  • Bug fix (non-breaking)
  • New feature (non-breaking)
  • Breaking change (requires documentation/migration)
  • Chore / refactor
  • Documentation only

Implementation details

In HyinitClassLoader.tryLoadClass, the defineClass call is now wrapped in a try-catch for NoClassDefFoundError.

Checklist

  • Code compiles successfully
  • Pull request does not contain unrelated changes
  • Changes follow this project's code style (Use spotlessApply when necessary)
  • Changes are tested or will be tested after submission

@KabanFriends KabanFriends merged commit 6a4a028 into IroriPowered:master Feb 28, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants