herobrine99dan / NESS-Reloaded

NESS Reloaded is an anticheat that aims to support lots of minecraft versions (from 1.8 to 1.17.1) without losing the advantage of having powerful checks
GNU General Public License v3.0
47 stars 5 forks source link

Get Rid of Static State such as NessAnticheat.getVersion() #117

Closed A248 closed 3 years ago

A248 commented 3 years ago

Accidentally initializing NessAnticheat during tests causes ExceptionInInitializerError. This is not a problem at runtime.

java.util.concurrent.CompletionException: java.lang.ExceptionInInitializerError
    at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:314)
    at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:319)
    at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1766)
    at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1756)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
    at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1016)
    at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1665)
    at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1598)
    at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
Caused by: java.lang.ExceptionInInitializerError
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:377)
    at com.sun.proxy.$Proxy23.<clinit>(Unknown Source)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:64)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
    at java.base/java.lang.reflect.Proxy.newProxyInstance(Proxy.java:1022)
    at java.base/java.lang.reflect.Proxy.newProxyInstance(Proxy.java:1008)
    at space.arim.dazzleconf.internal.processor.ProcessorBase.createConfig(ProcessorBase.java:98)
    at space.arim.dazzleconf.internal.processor.ProcessorBase.getNestedSection(ProcessorBase.java:139)
    at space.arim.dazzleconf.internal.processor.ProcessorBase.process(ProcessorBase.java:116)
    at space.arim.dazzleconf.internal.processor.ProcessorBase.createConfig(ProcessorBase.java:85)
    at space.arim.dazzleconf.internal.processor.ProcessorBase.getNestedSection(ProcessorBase.java:139)
    at space.arim.dazzleconf.internal.processor.ProcessorBase.process(ProcessorBase.java:116)
    at space.arim.dazzleconf.internal.processor.ProcessorBase.createConfig(ProcessorBase.java:85)
    at space.arim.dazzleconf.internal.AbstractConfigurationFactoryImpl.loadDefaults(AbstractConfigurationFactoryImpl.java:56)
    at space.arim.dazzleconf.factory.DelegatingConfigurationFactory.loadDefaults(DelegatingConfigurationFactory.java:67)
    at space.arim.dazzleconf.factory.AbstractConfigurationFactory.loadDefaults(AbstractConfigurationFactory.java:45)
    at com.github.ness.config.ConfigManager.lambda$loadConf$0(ConfigManager.java:74)
    at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1764)
    ... 6 more
Caused by: java.lang.NullPointerException: Cannot invoke "org.bukkit.Server.getVersion()" because "org.bukkit.Bukkit.server" is null
    at org.bukkit.Bukkit.getVersion(Bukkit.java:101)
    at com.github.ness.NessAnticheat.getVersion(NessAnticheat.java:56)
    at com.github.ness.NessAnticheat.<clinit>(NessAnticheat.java:42)
    ... 28 more

The solution to this is to remove any and all static state in NessAnticheat and elsewhere.

herobrine99dan commented 3 years ago

Fixed with https://github.com/herobrine99dan/NESS-Reloaded/commit/6e7afb1f6a6d12d74d46436f2525cf267b4ae13e