Need help with depends?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

442 Stars 15 Forks 26 Commits 1 Opened issues


The missing linker for the JVM.

Services available


Need anything else?

Contributors list

# 345,870
Apache ...
25 commits
# 47,933
1 commit


The missing linker for the JVM.

Problem statement

Have you ever gotten an error like this:

java.lang.NoClassDefFoundError: com/google/gson/JsonParseException

at io.kubernetes.client.ApiClient.<init>(
at io.kubernetes.client.util.Config.defaultClient(

Caused by: java.lang.ClassNotFoundException: at at java.lang.ClassLoader.loadClass( at sun.misc.Launcher$AppClassLoader.loadClass( at java.lang.ClassLoader.loadClass( ... 26 more

Then spent hours trying different versions of dependencies until it magically goes away?


Just run:

java -jar build/libs/depends-1.0-SNAPSHOT.jar --filter=JsonParseException

And get a helpful report of what's broken:

broken apis:
         com.fasterxml.jackson.core.JsonParseException.getMessage()Ljava/lang/String; is only present in 
        [com.fasterxml.jackson.core:jackson-core [2.9.3, 2.9.5, 2.9.4, 2.9.6]]

    com.fasterxml.jackson.core.JsonParseException.<init>(Lcom/fasterxml/jackson/core/JsonParser;Ljava/lang/String;Ljava/lang/Throwable;)V is only present in 
    [com.fasterxml.jackson.core:jackson-core [2.9.3, 2.9.5, 2.9.4, 2.7.8, 2.9.6]]

    com.fasterxml.jackson.core.JsonParseException.<init>(Lcom/fasterxml/jackson/core/JsonParser;Ljava/lang/String;)V is only present in 
    [com.fasterxml.jackson.core:jackson-core [2.9.3, 2.9.5, 2.9.4, 2.7.8, 2.9.6]]

    com.fasterxml.jackson.core.JsonParseException.<init>(Lcom/fasterxml/jackson/core/JsonParser;Ljava/lang/String;Lcom/fasterxml/jackson/core/JsonLocation;)V is only present in 
    [com.fasterxml.jackson.core:jackson-core [2.9.3, 2.9.5, 2.9.4, 2.7.8, 2.9.6]]

Then pick a version from the list!


git clone
cd dependes
./gradlew build
# This will create depends.jar
# Now, You'll need to run mvn install or gradle install on your project, to put build your code and put the resulting jar into your maven/gradle local cache. 
# After you've done artifact install, you can run depends on it like that:
java -jar build/libs/depends-1.0-SNAPSHOT.jar --filter=JsonParseException
# is the artifact you want to check.

How it works

  1. It uses ShrinkWrap Resolver to build a dependency graph of your project.
  2. It scans through the classes in each jar and uses ASM4 to find function invocations.
  3. It builds a map of all cross-module function calls.
  4. It assumes any function called from an external module is a public API.
  5. It compares all the versions of each module to see which methods are not present in all versions.
  6. It filters these by a given search term.
  7. Finally, it prints a report to help you figure out which version to use when a dependency conflict arrises.


  1. Count all the broken calls, and recommend the version of each library most likely to not have missing method exceptions at run time.
  2. Produce a report to name-and-shame semver violations.
  3. Convert this project into a Gradle ResolutionStrategy so it Just Works.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.