mirror of
https://git.sanhost.net/sanasol/hytale-f2p.git
synced 2026-02-27 23:31:48 -03:00
Agent and -Xshare:off both ruled out as causes. Restored normal agent injection. Updated docs with complete findings — issue remains unsolved. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
4.4 KiB
4.4 KiB
Singleplayer Server Crash: fastutil ClassNotFoundException
Status: Open — NO SOLUTION (Feb 24-27 2026)
Symptom
Singleplayer server crashes immediately on boot:
Exception in thread "main" java.lang.NoClassDefFoundError: it/unimi/dsi/fastutil/objects/ObjectArrayList
at com.hypixel.hytale.plugin.early.EarlyPluginLoader.<clinit>(EarlyPluginLoader.java:34)
at com.hypixel.hytale.Main.main(Main.java:36)
Caused by: java.lang.ClassNotFoundException: it.unimi.dsi.fastutil.objects.ObjectArrayList
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
Server exits with code 1. Multiplayer works fine for the same user.
Affected Users
- ヅ𝚃 JAYED ! (Feb 24) — Windows x86_64, had AOT cache errors before fastutil crash
- Asentrix (Feb 27) — Windows x86_64 (NT 10.0.26200.0), RTX 4060, Launcher v2.4.4, NO AOT cache errors
- Reproduces 100% on singleplayer, every attempt
- Multiplayer works fine for both users
- macOS/Linux users are NOT affected
Ruled Out (confirmed via debug builds)
| Suspect | Tested | Result |
|---|---|---|
| DualAuth Agent | Debug build with agent completely disabled (debug-no-agent tag) |
Same crash. Agent is innocent. |
-Xshare:off (CDS) |
Added to JAVA_TOOL_OPTIONS in launcher code (debug-xshare-off tag) |
Did not help. CDS is not the cause. |
-XX:+UseCompactObjectHeaders |
Stripped via wrapper | Did not help. Server has -XX:+IgnoreUnrecognizedVMOptions anyway. |
| Corrupted game files | User did repair + full reinstall | Same crash. |
| Java wrapper | Logs confirm wrapper works correctly | Not the cause. |
| ARM64/Parallels | User is on standard Windows x86_64 | Not applicable. |
| AOT cache | Asentrix has no AOT errors (JAYED did), both crash the same way | Not the root cause. |
What We Know
fastutilis bundled insideHytaleServer.jar(fat/shaded JAR) — same JAR for all users- JVM's
BuiltinClassLoadercannot findit.unimi.dsi.fastutil.objects.ObjectArrayListdespite it being in the JAR - Crash happens at
EarlyPluginLoaderstatic initializer (line 34) which importsObjectArrayList - The bundled JRE is identical for all users (downloaded by launcher)
- The issue is not caused by anything the F2P launcher adds — it's the vanilla server JVM failing to load its own classes
Remaining Theories
- Antivirus/security software — Windows Defender or third-party AV intercepting JAR file reads. Real-time scanning + fat JAR = known conflict. Untested — user should try disabling AV temporarily.
- Windows Insider build — Asentrix is on NT 10.0.26200.0 (Windows 11 Dev/Insider). Bleeding-edge Windows may have JVM compatibility issues.
- File locking — Stalled
java.exeprocesses holdingHytaleServer.jaropen (Asentrix had stalled processes killed at every launch). - Corrupted JRE on disk — Despite being the same download, filesystem or AV may have corrupted specific JRE files on their system.
Next Steps to Try
- Disable Windows Defender temporarily — the only quick test left
- Delete bundled JRE and let launcher re-download — rules out local JRE corruption
- Ask if official Hytale singleplayer works — if it also crashes, it's their system (but F2P users may not have access)
Update History
Feb 24: First report (JAYED)
User reported singleplayer crash. Initial investigation found AOT cache errors + fastutil ClassNotFoundException. Stripping -XX:+UseCompactObjectHeaders did not help.
Feb 27: Second report (Asentrix), extensive debugging
- Asentrix hit same crash, no AOT errors — ruled out AOT as root cause
- Built
debug-xshare-off: added-Xshare:offtoJAVA_TOOL_OPTIONS— did not help - Built
debug-no-agent: completely disabled DualAuth agent — same crash - Conclusion: Neither the agent nor CDS is the cause. The JVM itself cannot load classes from the fat JAR on these specific Windows systems.
- Note: wrapper
injectArgsappend AFTER-jar, so they cannot inject JVM flags — onlyJAVA_TOOL_OPTIONSworks for JVM flags
Related
- Java wrapper config:
backend/core/config.js(stripFlags / injectArgs) - DualAuth Agent: v1.1.12, package
ws.sanasol.dualauth - Game version at time of reports:
2026.02.19-1a311a592 - Debug tags:
debug-xshare-off,debug-no-agent - Log submission IDs:
c88e7b71(Asentrix initial),0445e4dc(xshare test),748dceeb(no-agent test)