java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ser/std/ToStringSerializerBase
See original GitHub issuePrerequisites
- If this is a question/suggestion, I have already considered discuss it on Discord Server
- This issue specifically has something to do with Twitch4J
- I have attempted to look for similar issues already
Description
When shading twitch4j 1.1.2 with maven it will not shade in the ToSTringSerializerBase and it is necessary
Steps to Reproduce
Expected behavior:
It to shade in all required dependency classes when shading in twitch4j.
Actual behavior:
Missing classes resulting in the error.
Stacktrace (if applicable):
Exception in thread "main" java.util.ServiceConfigurationError: com.fasterxml.jackson.databind.Module: com.fasterxml.jackson.datatype.jsr310.JavaTimeModule Unable to get public no-arg constructor
at java.base/java.util.ServiceLoader.fail(ServiceLoader.java:584)
at java.base/java.util.ServiceLoader.getConstructor(ServiceLoader.java:675)
at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService(ServiceLoader.java:1234)
at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext(ServiceLoader.java:1266)
at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1301)
at java.base/java.util.ServiceLoader$3.hasNext(ServiceLoader.java:1386)
at com.fasterxml.jackson.databind.ObjectMapper.findModules(ObjectMapper.java:982)
at com.fasterxml.jackson.databind.ObjectMapper.findModules(ObjectMapper.java:966)
at com.fasterxml.jackson.databind.ObjectMapper.findAndRegisterModules(ObjectMapper.java:1016)
at com.github.twitch4j.helix.TwitchHelixBuilder.build(TwitchHelixBuilder.java:110)
at com.github.twitch4j.TwitchClientBuilder.build(TwitchClientBuilder.java:316)
at tv.moep.discord.bot.managers.StreamingManager.reload(StreamingManager.java:174)
at tv.moep.discord.bot.MoepsBot.loadConfig(MoepsBot.java:175)
at tv.moep.discord.bot.MoepsBot.<init>(MoepsBot.java:118)
at tv.moep.discord.bot.MoepsBot.main(MoepsBot.java:104)
Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ser/std/ToStringSerializerBase
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:821)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:719)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:642)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:600)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at java.base/java.lang.Class.getDeclaredConstructors0(Native Method)
at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3215)
at java.base/java.lang.Class.getConstructor0(Class.java:3420)
at java.base/java.lang.Class.getConstructor(Class.java:2165)
at java.base/java.util.ServiceLoader$1.run(ServiceLoader.java:662)
at java.base/java.util.ServiceLoader$1.run(ServiceLoader.java:659)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:554)
at java.base/java.util.ServiceLoader.getConstructor(ServiceLoader.java:670)
... 13 more
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.ser.std.ToStringSerializerBase
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 30 more
Version affected: 1.1.2, was fine with previously used 1.1.0
Additional Information
“Fixed” by manually shading in jackson-databind like this: https://github.com/MoepTv/discord-bot/commit/83ab24853d35e5fe95692b8a250d8901019ff1bd
Issue Analytics
- State:
- Created 3 years ago
- Comments:6 (3 by maintainers)
Top Results From Across the Web
How can I solve "java.lang.NoClassDefFoundError"?
The NoClassDefFoundError indicates that the classloader (in this case java.net.URLClassLoader ), which is responsible for dynamically loading classes, cannot ...
Read more >java.lang.NoClassDefFoundError - DigitalOcean
NoClassDefFoundError is runtime error thrown when a required class is not found in the classpath and hence JVM is unable to load it...
Read more >3 ways to solve java.lang.NoClassDefFoundError in Java J2EE
A simple example of NoClassDefFoundError is class belongs to a missing JAR file or JAR was not added into classpath or sometimes jar's...
Read more >Error "java.lang.NoClassDefFoundError - My Oracle Support
Error "java.lang.NoClassDefFoundError: com/oracle/cie/encryption/AbstractEncryptionService" Starting a Collocated Agent after Updating ...
Read more >Why am I encountering java.lang.NoClassDefFoundError at ...
In workbench, adding projects directly to the java build path will allow code to compile, but it will not be able to resolve...
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Yeah, that makes it use the correct version too. But of course that has the same downsides as directly specifying the version (potentially breaking the dependency of the other library :S) Guess there isn’t really a good way around resolving this without actually updating the dependency in the other project or using different modules and relocating stuff.
Guess I’ll close this issue seeing as we figured out the source and potential workarounds 😃 (I also opened an issue with Javacord regarding updating the dependency)
Since maven resolves versions via nearest-wins, the old version used by archaius isn’t pertinent.
Speaking of which, you could try defining the twitch4j dependency before javacord in your pom and see if the correct jackson version is resolved (if you don’t want to specify the version yourself).