NoClassDefFoundError в кастомном моде Forge 1.15.2 с Twitch4J - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь создать мод Minecraft, который использует внешние библиотеки. Все было хорошо, пока я не использовал Twitch4J в качестве библиотеки. Теперь при запуске получаю java.lang.NoClassDefFoundError. В IntelliJ он работает нормально, но когда я помещаю его в мой модпак, это происходит.

Здесь вы можете увидеть полное исключение:

java.lang.NoClassDefFoundError: org/apache/commons/configuration/AbstractConfiguration
    at com.github.twitch4j.helix.TwitchHelixBuilder.build(TwitchHelixBuilder.java:81) ~[?:1.6]
    at de.melanx.byestack.twitch.TitleChange.<init>(TitleChange.java:25) ~[?:1.6]
    at de.melanx.byestack.ByeStack.<init>(ByeStack.java:27) ~[?:1.6]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_221]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_221]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_221]
    at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:1.8.0_221]
    at java.lang.Class.newInstance(Unknown Source) ~[?:1.8.0_221]
    at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:131) ~[?:31.1]
    at java.util.function.Consumer.lambda$andThen$0(Unknown Source) ~[?:1.8.0_221]
    at java.util.function.Consumer.lambda$andThen$0(Unknown Source) ~[?:1.8.0_221]
    at net.minecraftforge.fml.ModContainer.transitionState(ModContainer.java:112) ~[?:?]
    at net.minecraftforge.fml.ModList.lambda$null$10(ModList.java:135) ~[?:?]
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) ~[?:1.8.0_221]
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source) ~[?:1.8.0_221]
    at java.util.stream.AbstractPipeline.copyInto(Unknown Source) ~[?:1.8.0_221]
    at java.util.stream.ForEachOps$ForEachTask.compute(Unknown Source) ~[?:1.8.0_221]
    at java.util.concurrent.CountedCompleter.exec(Unknown Source) ~[?:1.8.0_221]
    at java.util.concurrent.ForkJoinTask.doExec(Unknown Source) ~[?:1.8.0_221]
    at java.util.concurrent.ForkJoinTask.doInvoke(Unknown Source) ~[?:1.8.0_221]
    at java.util.concurrent.ForkJoinTask.invoke(Unknown Source) ~[?:1.8.0_221]
    at java.util.stream.ForEachOps$ForEachOp.evaluateParallel(Unknown Source) ~[?:1.8.0_221]
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateParallel(Unknown Source) ~[?:1.8.0_221]
    at java.util.stream.AbstractPipeline.evaluate(Unknown Source) ~[?:1.8.0_221]
    at java.util.stream.ReferencePipeline.forEach(Unknown Source) ~[?:1.8.0_221]
    at java.util.stream.ReferencePipeline$Head.forEach(Unknown Source) ~[?:1.8.0_221]
    at net.minecraftforge.fml.ModList.lambda$dispatchParallelEvent$11(ModList.java:135) ~[?:?]
    at java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(Unknown Source) [?:1.8.0_221]
    at java.util.concurrent.ForkJoinTask.doExec(Unknown Source) [?:1.8.0_221]
    at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(Unknown Source) [?:1.8.0_221]
    at java.util.concurrent.ForkJoinPool.runWorker(Unknown Source) [?:1.8.0_221]
    at java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source) [?:1.8.0_221]
Caused by: java.lang.ClassNotFoundException: org.apache.commons.configuration.AbstractConfiguration
    at java.lang.ClassLoader.findClass(Unknown Source) ~[?:1.8.0_221]
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_221]
    at cpw.mods.modlauncher.TransformingClassLoader.loadClass(TransformingClassLoader.java:92) ~[modlauncher-5.1.0.jar:?]
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_221]
    ... 32 more

Я создал суть с моим build.gradle и TitleChange классом, в котором я анонимизировал секреты, такие как токены oauth: https://gist.github.com/MelanX/11082ec5a01c6c0d0808863e5dba7209

Что действительно странно: иногда класс, который не найден, - это AbstractConfiguration, а иногда Configuration.

Здесь вы можете увидеть другую ошибку:

java.lang.NoClassDefFoundError: org/apache/commons/configuration/Configuration
    at com.github.twitch4j.kraken.TwitchKrakenBuilder.build(TwitchKrakenBuilder.java:77) ~[?:1.6] {re:classloading}
    at de.melanx.byestack.twitch.TitleChange.<init>(TitleChange.java:24) ~[?:1.6] {re:classloading}
    at de.melanx.byestack.ByeStack.<init>(ByeStack.java:27) ~[?:1.6] {re:classloading}
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_221] {}
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_221] {}
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_221] {}
    at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:1.8.0_221] {}
    at java.lang.Class.newInstance(Unknown Source) ~[?:1.8.0_221] {}
    at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:131) ~[?:31.1] {re:classloading}
    at java.util.function.Consumer.lambda$andThen$0(Unknown Source) ~[?:1.8.0_221] {}
    at java.util.function.Consumer.lambda$andThen$0(Unknown Source) ~[?:1.8.0_221] {}
    at net.minecraftforge.fml.ModContainer.transitionState(ModContainer.java:112) ~[?:?] {re:classloading}
    at net.minecraftforge.fml.ModList.lambda$null$10(ModList.java:135) ~[?:?] {re:classloading}
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) ~[?:1.8.0_221] {}
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source) ~[?:1.8.0_221] {}
    at java.util.stream.AbstractPipeline.copyInto(Unknown Source) ~[?:1.8.0_221] {}
    at java.util.stream.ForEachOps$ForEachTask.compute(Unknown Source) ~[?:1.8.0_221] {}
    at java.util.concurrent.CountedCompleter.exec(Unknown Source) ~[?:1.8.0_221] {}
    at java.util.concurrent.ForkJoinTask.doExec(Unknown Source) ~[?:1.8.0_221] {}
    at java.util.concurrent.ForkJoinTask.doInvoke(Unknown Source) ~[?:1.8.0_221] {}
    at java.util.concurrent.ForkJoinTask.invoke(Unknown Source) ~[?:1.8.0_221] {}
    at java.util.stream.ForEachOps$ForEachOp.evaluateParallel(Unknown Source) ~[?:1.8.0_221] {}
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateParallel(Unknown Source) ~[?:1.8.0_221] {}
    at java.util.stream.AbstractPipeline.evaluate(Unknown Source) ~[?:1.8.0_221] {}
    at java.util.stream.ReferencePipeline.forEach(Unknown Source) ~[?:1.8.0_221] {}
    at java.util.stream.ReferencePipeline$Head.forEach(Unknown Source) ~[?:1.8.0_221] {}
    at net.minecraftforge.fml.ModList.lambda$dispatchParallelEvent$11(ModList.java:135) ~[?:?] {re:classloading}
    at java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(Unknown Source) [?:1.8.0_221] {}
    at java.util.concurrent.ForkJoinTask.doExec(Unknown Source) [?:1.8.0_221] {}
    at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(Unknown Source) [?:1.8.0_221] {}
    at java.util.concurrent.ForkJoinPool.runWorker(Unknown Source) [?:1.8.0_221] {}
    at java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source) [?:1.8.0_221] {}
Caused by: java.lang.ClassNotFoundException: org.apache.commons.configuration.Configuration
    at java.lang.ClassLoader.findClass(Unknown Source) ~[?:1.8.0_221] {}
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_221] {}
    at cpw.mods.modlauncher.TransformingClassLoader.loadClass(TransformingClassLoader.java:92) ~[modlauncher-5.1.0.jar:?] {}
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_221] {}
    ... 32 more

Не знаю, как это исправить. Классы в банке. До использования Twitch4J мод работал с другими библиотеками. Надеюсь, кто-нибудь может мне помочь :) Если вам нужна дополнительная информация, скажите, пожалуйста!

...