Get Rid of Static State such as NessAnticheat.getVersion()
A248 opened this issue · comments
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.
Fixed with 6e7afb1