none
HDInsight Guice Dependency Version RRS feed

  • Question

  • Currently trying to run a jar file on an On-Demand HDInsight (version 3.6). After adding functionality for class injection (Java 8, Guice 4.0) I am getting the following error:

    Caused by: java.lang.NoSuchMethodError: com.google.inject.Binder.scanModulesForAnnotatedMethods(Lcom/google/inject/spi/ModuleAnnotatedMethodScanner;)V
    at com.google.inject.multibindings.MultibindingsScanner$1.configure(MultibindingsScanner.java:53)
    at com.google.inject.AbstractModule.configure(AbstractModule.java:59)
    at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:223)
    at com.google.inject.AbstractModule.install(AbstractModule.java:118)

    ...

    My intuition is that this is a dependency error. At the following link for the release notes https://github.com/uglide/azure-content/blob/master/articles/hdinsight/hdinsight-release-notes.md it says that Guice was added as a dependency for HDInsight 3.x. 

    My question is what version of Guice is used by HDInsight as a dependency? If it can be confirmed that HDInsight does not use Guice 4.0 we can assume that there is a dependency clash that could be causing the error. 

    Wednesday, November 6, 2019 9:52 PM

All replies

  • Note that in the release notes for Guice 4.0 (https://github.com/google/guice/wiki/Guice40) it mentions that:

    Extensions can add bindings using @Provides-like methods, by binding a ModuleAnnotatedMethodScanner.

    Added ModuleAnnotatedMethodScanner (installed by Binder.scanModulesForAnnotatedMethods) to allow

    extensions to hook into Modules, scanning for methods annotated with @Provides-like methods and

    creating bindings.



    • Edited by bwong9 Wednesday, November 6, 2019 10:04 PM
    Wednesday, November 6, 2019 9:58 PM
  • Hello,

    I’m working with the product team and get back to you when I have more information.

    Thursday, November 7, 2019 6:17 AM
    Moderator
  • Hello, 

    I just wanted for follow up on if there was anymore information about the Guice dependency. Also, assuming that there is a Guice dependency that is an earlier version than 4.0 is there anyway we can enforce 4.0 version for our program?

    Tuesday, November 12, 2019 8:39 PM
  • Hello,

    Could you please provide more details on your ask, such as:

    What app are you trying to run on HDInsight cluster?

    Do you want to know which version of java installed on HDInsight cluster?

    The usual guidance is you can create an uber jar and package the dependency.

    We ship java 1.8 and the precise version depends on the version of the secure base image.

    Wednesday, November 20, 2019 6:10 AM
    Moderator