2017-10-30 14 views
0

これは、Google Guiceの呼び出しコードです:GuiceがNoSuchMethodErrorを投げているのはなぜですか?

public static ContainerRunner forInjector(Injector injector) { 
    return (ContainerRunner)injector.getInstancefaultContainerRunner.class); 
} 

public static ContainerRunner forModules(Iterable<? extends Module> modules) { 
    return forInjector(Guice.createInjector(modules)); 
} 

そして、この例外:

Exception in thread "main" java.lang.NoSuchMethodError: com.google.inject.internal.Initializer.requestInjection(Lcom/google/inject/internal/InjectorImpl;Ljava/lang/Object;Lcom/google/inject/Binding;Ljava/lang/Object;Ljava/util/Set;)Lcom/google/inject/internal/Initializable; 
at com.google.inject.internal.BindingProcessor$1.visit(BindingProcessor.java:108) 
at com.google.inject.internal.BindingProcessor$1.visit(BindingProcessor.java:70) 
at com.google.inject.internal.ProviderInstanceBindingImpl.acceptTargetVisitor(ProviderInstanceBindingImpl.java:62) 
at com.google.inject.internal.BindingProcessor.visit(BindingProcessor.java:70) 
at com.google.inject.internal.BindingProcessor.visit(BindingProcessor.java:43) 
at com.google.inject.internal.BindingImpl.acceptVisitor(BindingImpl.java:93) 
at com.google.inject.internal.AbstractProcessor.process(AbstractProcessor.java:56) 
at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:186) 
at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:104) 
at com.google.inject.Guice.createInjector(Guice.java:96) 
at com.google.inject.Guice.createInjector(Guice.java:73) 
at com.baml.gmt.xasf.container.ContainerRunners.forModules(ContainerRunners.java:39) 

私の問題は、メッセージが欠落している特定のどの方法を教えていないということです。これをデバッグする良い方法はありますか?これはMavenの過渡的な依存関係の問題ですか?

答えて

0

正確にどの方法が欠落しているかがわかります。それはです:最後はFive years agoを変更したメソッドシグネチャを考慮

、あなたはほぼ確実ではない方法をしているビルドの問題のいくつかの並べ替えを持っています何とかあなたのクラスパスで。さらにデバッグできるように十分な情報を私たちに与えていない。

+0

ありがとう、@ durron597、メッセージが一貫していません。推移的な依存関係によって引き出された複数のGuiceバージョンによって引き起こされる可能性があると言われました。私を殺しているのは、このエラーメッセージがどこから始まるのか分からないということです。あるいは、複数のバージョンのJARファイルが存在する可能性があります。 – joehuangathome

+0

私はちょうど2つの場所で同じメインメソッドを実行しました:IntelliJとUnix、libディレクトリでmvn依存関係によって生成されたすべての依存ファイルをダンプします:copy-dependenciesとpub libをjava classpathとしてダンプします。 IntelliJでは、うまく動作します。 Unixでは、このエラースタックトレースをスローしました。 – joehuangathome

0

Unix環境で実行すると、libディレクトリにあるファイルのアクセス権に問題があることが判明しました。許可を変更するとすぐに、このGuiceのエラーを過ぎました。このGuiceのエラーは、私のペーストの経験から、ほとんどの場合依存関係の問題が原因です。しかし、Guiceはより具体的で、より説明的なエラーメッセージをあなたに伝えていません。

関連する問題