java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ser/std/ToStringSerializerBase

See original GitHub issue

Prerequisites

  • 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

  1. Add twitch4j to pom (e.g. like this)
  2. Shade it in (like this)

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:closed
  • Created 3 years ago
  • Comments:6 (3 by maintainers)

github_iconTop GitHub Comments

1reaction
Phoenix616commented, Oct 13, 2020

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)

0reactions
iProdigycommented, Oct 13, 2020

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).

Read more comments on GitHub >

github_iconTop 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 >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found