0

私のプロジェクトでは、handlebars-proto を使用してテンプレートを json にバインドしています。また、logstash-logback-encoder を使用して、logstash の Json 形式でログインしようとしています。以下は私のコンパイル依存関係です(他の依存関係とともに)

   compile 'net.logstash.logback:logstash-logback-encoder:4.6'
   compile 'com.github.jknack:handlebars-proto:4.0.5'

ハンドルバーを削除すると、依存関係のログが正常に機能します。ハンドルバーが存在する場合、次の警告が表示されます。

SLF4J: クラスパスに複数の SLF4J バインディングが含まれています。SLF4J: [jar:file:/C:/Users/manish/.gradle/caches/modules-2/files-2.1/com.github.jknack/handlebars-proto/4.0.5/5979737344d99e0d8b482e828f247ae86fd0113/handlebars-proto でバインドが見つかりました-4.0.5.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: [jar:file:/C:/Users/manish/.gradle/caches/modules-2/files-2.1/ch でバインドが見つかりました.qos.logback/logback-classic/1.1.6/665e3de72f19ec66ac67d82612d7b8e6b3de3cd0/logback-classic-1.1.6.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: http://www.slf4j.org/codesを参照説明については.html#multiple_bindingsを参照してください。

エラーが続きます:

[ch.qos.logback.classic.LoggerContext] のインスタンス化に失敗しました 報告された例外: java.lang.NoSuchMethodError: ch.qos.logback.core.spi.ContextAwareBase.(Lch/qos/logback/core/spi/ContextAware;)V net.logstash.logback.composite.CompositeJsonFormatter.(CompositeJsonFormatter.java:106) で net.logstash.logback.composite.loggingevent.LoggingEventCompositeJsonFormatter.(LoggingEventCompositeJsonFormatter.java:28) で net.logstash.logback.LogstashFormatter.(LogstashFormatter. java:122) net.logstash.logback.LogstashFormatter.(LogstashFormatter.java:118) で net.logstash.logback.LogstashFormatter.(LogstashFormatter.java:114) で net.logstash.logback.encoder.LogstashEncoder.createFormatter(LogstashEncoder) .java:31) で net.logstash.logback.encoder.CompositeJsonEncoder.(CompositeJsonEncoder.java:48) で net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder.(LoggingEventCompositeJsonEncoder.java:23) で net.logstash.logback.encoder. LogstashEncoder.(LogstashEncoder.java:27) は sun.reflect にあります。NativeConstructorAccessorImpl.newInstance0(Native Method) の sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) の sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) の java.lang.reflect.Constructor.newInstance(Constructor. java:526) で java.lang.Class.newInstance(Class.java:379) で ch.qos.logback.core.joran.action.NestedComplexPropertyIA.begin(NestedComplexPropertyIA.java:122) で ch.qos.logback.core で.joran.spi.Interpreter.callBeginAction(Interpreter.java:276)、ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:148)、ch.qos.logback.core.joran.spi .Interpreter.startElement(Interpreter.java:130) at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50)50)50)newInstance0(Native Method) の sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) の sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) の java.lang.reflect.Constructor.newInstance(Constructor.java: 526) java.lang.Class.newInstance(Class.java:379) で ch.qos.logback.core.joran.action.NestedComplexPropertyIA.begin(NestedComplexPropertyIA.java:122) で ch.qos.logback.core.joran .spi.Interpreter.callBeginAction(Interpreter.java:276) で ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:148) で ch.qos.logback.core.joran.spi.Interpreter .startElement(Interpreter.java:130) at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50)newInstance0(Native Method) の sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) の sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) の java.lang.reflect.Constructor.newInstance(Constructor.java: 526) java.lang.Class.newInstance(Class.java:379) で ch.qos.logback.core.joran.action.NestedComplexPropertyIA.begin(NestedComplexPropertyIA.java:122) で ch.qos.logback.core.joran .spi.Interpreter.callBeginAction(Interpreter.java:276) で ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:148) で ch.qos.logback.core.joran.spi.Interpreter .startElement(Interpreter.java:130) at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50)newInstance(NativeConstructorAccessorImpl.java:57) で sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) で java.lang.reflect.Constructor.newInstance(Constructor.java:526) で java.lang.Class.newInstance(Class .java:379) ch.qos.logback.core.joran.action.NestedComplexPropertyIA.begin(NestedComplexPropertyIA.java:122) で ch.qos.logback.core.joran.spi.Interpreter.callBeginAction(Interpreter.java:276) で) ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:148) で ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:130) で ch. qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50)newInstance(NativeConstructorAccessorImpl.java:57) で sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) で java.lang.reflect.Constructor.newInstance(Constructor.java:526) で java.lang.Class.newInstance(Class .java:379) ch.qos.logback.core.joran.action.NestedComplexPropertyIA.begin(NestedComplexPropertyIA.java:122) で ch.qos.logback.core.joran.spi.Interpreter.callBeginAction(Interpreter.java:276) で) ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:148) で ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:130) で ch. qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50)newInstance(DelegatingConstructorAccessorImpl.java:45) で java.lang.reflect.Constructor.newInstance(Constructor.java:526) で java.lang.Class.newInstance(Class.java:379) で ch.qos.logback.core.joran .action.NestedComplexPropertyIA.begin(NestedComplexPropertyIA.java:122) で ch.qos.logback.core.joran.spi.Interpreter.callBeginAction(Interpreter.java:276) で ch.qos.logback.core.joran.spi.Interpreter ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:130) の .startElement(Interpreter.java:148) ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer) .java:50)newInstance(DelegatingConstructorAccessorImpl.java:45) で java.lang.reflect.Constructor.newInstance(Constructor.java:526) で java.lang.Class.newInstance(Class.java:379) で ch.qos.logback.core.joran .action.NestedComplexPropertyIA.begin(NestedComplexPropertyIA.java:122) で ch.qos.logback.core.joran.spi.Interpreter.callBeginAction(Interpreter.java:276) で ch.qos.logback.core.joran.spi.Interpreter ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:130) の .startElement(Interpreter.java:148) ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer) .java:50)122) ch.qos.logback.core.joran.spi.Interpreter.callBeginAction(Interpreter.java:276) で ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:148) で.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:130) at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50)122) ch.qos.logback.core.joran.spi.Interpreter.callBeginAction(Interpreter.java:276) で ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:148) で.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:130) at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50)

ハンドルバーから推移的な依存関係として slf4j を除外しようとしましたが、役に立ちませんでした。

compile
 ('com.github.jknack:handlebars-proto:4.0.5'){

 exclude module: 'slf4j-api' 

 }

助けてくれてありがとう。詳細が必要な場合はお知らせください。

4

1 に答える 1

0

エラー メッセージは、handlebars-proto jar に の実装が含まれているためorg.slf4j.impl.StaticLoggerBinderです。これは、ロギングの実装があることを意味します。また、Logback の独自のロギング実装を追加しようとしていますが、SLF4J は一度に 2 つのロギング システムを使用できないため、不平を言っています。

handlebars プロジェクトには詳しくありませんが、そこにあるライブラリは、ログ システムを含む完全なアプリケーションであり、別のプロジェクトで依存関係として使用するように実際には設計されていないと思います。おそらく、ライブラリだけであり、独自のロギング実装を含めようとしない別のバージョンが利用可能ですか?

于 2016-06-02T17:55:13.983 に答える