mirror of
https://git.sanhost.net/sanasol/hytale-f2p
synced 2026-02-28 17:21:47 -03:00
91 lines
4.8 KiB
Markdown
91 lines
4.8 KiB
Markdown
# Singleplayer Server Crash: fastutil ClassNotFoundException
|
|
|
|
## Status: Open — likely outdated HytaleServer.jar (Feb 24-28 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
|
|
|
|
1. **ヅ𝚃 JAYED !** (Feb 24) — Windows x86_64, had AOT cache errors before fastutil crash
|
|
2. **Asentrix** (Feb 27) — Windows x86_64 (NT 10.0.26200.0), RTX 4060, Launcher v2.4.4, NO AOT cache errors
|
|
3. **7645754** (Feb 28) — Standalone server on localhost, **FIXED by updating HytaleServer.jar**
|
|
|
|
- Reproduces 100% on singleplayer, every attempt (users 1-2)
|
|
- Multiplayer works fine for users 1-2
|
|
- 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. |
|
|
|
|
## Key Finding: Outdated HytaleServer.jar (Feb 28)
|
|
|
|
User `7645754` had the **exact same error** on their standalone localhost server but NOT on their VPS. **Fixed by replacing `HytaleServer.jar` with the current version.** The old JAR used to work but stopped — likely the bundled JRE was updated and is now incompatible with older JAR versions.
|
|
|
|
This strongly suggests the root cause for F2P launcher users is also a **stale/mismatched `HytaleServer.jar`**. The launcher may report the correct version but the actual file on disk could be from an older download.
|
|
|
|
## What We Know
|
|
|
|
- `fastutil` is bundled inside `HytaleServer.jar` (fat/shaded JAR)
|
|
- JVM's `BuiltinClassLoader` cannot find `it.unimi.dsi.fastutil.objects.ObjectArrayList` despite it being in the JAR
|
|
- Crash happens at `EarlyPluginLoader` static initializer (line 34) which imports `ObjectArrayList`
|
|
- **Replacing `HytaleServer.jar` with a fresh copy fixes the issue** (confirmed by user 3)
|
|
- The issue is NOT caused by the DualAuth agent or any launcher modification
|
|
|
|
## Fix for Users
|
|
|
|
### F2P Launcher users (Asentrix, JAYED)
|
|
1. **Delete the entire game folder**: `%LOCALAPPDATA%\HytaleF2P\release\package\game\`
|
|
2. Relaunch — launcher will re-download everything fresh
|
|
3. NOT just "repair" — full delete to ensure no stale files remain
|
|
|
|
### Standalone server users
|
|
1. Download fresh `HytaleServer.jar` from current game version
|
|
2. Replace the old JAR file
|
|
|
|
## 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:off` to `JAVA_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 `injectArgs` append AFTER `-jar`, so they cannot inject JVM flags — only `JAVA_TOOL_OPTIONS` works for JVM flags
|
|
|
|
### Feb 28: Third user (7645754) — FIXED by replacing HytaleServer.jar
|
|
- Standalone server user had same crash on localhost, VPS worked fine
|
|
- **Fixed by updating `HytaleServer.jar` to match VPS version**
|
|
- Root cause likely: outdated JAR incompatible with current/updated JRE
|
|
- For F2P launcher users: need to delete game folder and force fresh re-download
|
|
|
|
## 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)
|