当使用h2o-genmodel.jar
(无论是从行家中央产生魔力时或者说是输出)SLF4J提供错误
SLF4J:类路径中包含多个SLF4J绑定
SLF4J:在找到结合[:文件:罐子!〜/ .ivy2 /缓存/ org.slf4j / SLF4J-log4j12 /瓶/ SLF4J-log4j12-1.7.5.jar /org/slf4j/impl/StaticLoggerBinder.class]
SLF4J:见http://www.slf4j.org/codes.html#multiple_bindings一个解释。
使用Maven或SBT的传递依赖排除不工作,所以现在我使用的是与魔力的jar输出和消除用手从罐内的依赖关系。
有一些使用H2O modelgen,而不必与罐子(使用maven代替将是可取的)内部手动一塌糊涂更好的办法?
因此,这最终是太仓促的情况下SO张贴
使用Maven或SBT的传递依赖排除不起作用
结束了不为真。 我只是需要刷新SBT一次多。
我虽然离开了这个问题了参考。 mvnrepository.com可能表明这是一个POM的依赖,你应该包括像依赖
libraryDependencies += "ai.h2o" % "h2o-genmodel" % "3.18.0.11" % "runtime" pomOnly()
要么
<dependency>
<groupId>ai.h2o</groupId>
<artifactId>h2o-genmodel</artifactId>
<version>3.18.0.11</version>
<type>pom</type>
<scope>runtime</scope>
</dependency>
但似乎从实验是不工作,并hex.genmodel...
包将无法使用
要获得相关性问题,并在SLF4J拉不绑定,您应该使用
libraryDependencies += "ai.h2o" % "h2o-genmodel" % "3.18.0.11" exclude("org.slf4j", "slf4j-log4j12")
要么
<dependency>
<groupId>ai.h2o</groupId>
<artifactId>h2o-genmodel</artifactId>
<version>3.18.0.11</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
h2o-genmodel
这是一个POM类型依赖。 这意味着你使用它作为一个聚合的多个依赖,使您的生活更轻松。 从事实,你的问题出现ai.h2o:deepwater-backend-api:jar:1.0.4
的依赖h2o-genmodel
有一个短暂的依赖关系org.slf4j:slf4j-log4j12:jar:1.7.5
。 您可以通过使用依赖Maven插件调试依赖层次,运行以下命令:
> mvn dependency:tree
...
[INFO] \- ai.h2o:h2o-genmodel:pom:3.18.0.11
[INFO] +- net.sf.opencsv:opencsv:jar:2.3
[INFO] +- com.google.code.gson:gson:jar:2.6.2
[INFO] +- com.google.protobuf.nano:protobuf-javanano:jar:3.1.0
[INFO] \- ai.h2o:deepwater-backend-api:jar:1.0.4
[INFO] \- org.slf4j:slf4j-log4j12:jar:1.7.5
[INFO] +- org.slf4j:slf4j-api:jar:1.7.5
[INFO] \- log4j:log4j:jar:1.2.17
为了解决这个问题,可以排除slf4j-log4j12
从依赖h2o-genmodel
这种依赖性:
<dependency>
<groupId>ai.h2o</groupId>
<artifactId>h2o-genmodel</artifactId>
<version>3.18.0.11</version>
<type>pom</type>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
您可以再次运行Maven的依赖关系树的命令检查多少SLF4J绑定依然存在。
由于错误多SLF4J绑定的抱怨我认为一旦你确保只有一个SLF4J的依赖关系树一切结合会在运行时的罚款。
更新:
更多细节,为什么这个解决方案的工作原理:
首先, ai.h2o:h2o-genmodel
依赖声明为类型POM是因为这是它是如何发布的。 型聚甲醛的行家伪影是在两种情况下使用:作为子模块的聚合器或作为一个依赖性聚合。 在这种情况下,POM类型是在第二方案中所使用的,收拾依赖性ai.h2o:h2o-genmodel
。 为了varify这一点,你可以检查你的Maven本地仓库(最有可能在$ {}的user.home /。平方米/库/ AI / H2O / H2O-的genmodel / 3.18.0.11没有jar文件,只有.pom,请阅读本文档介绍相关机制和POM关系
另一个问题,可能是一个事实ai.h2o:h2o-genmodel
不符合推荐的方法,因为它不使用包依赖<dependencyManagement>
而是使用<dependencies>
。 正因为如此,在行家文档的细节是不完全按预期工作。 为了克服这一点,你必须使用ai.h2o:h2o-genmodel
上明确<dependencies>
并手动调整它背后每一个依赖的范围。 我强烈建议运行mvn dependency:tree
,因为会显示每个相关的范围。 在我的输出我删除了,因为范围我不希望它polute答案。
总之,为什么在我的解决方案可与依赖声明为POM和@ kag0还不如聚甲醛是因为ai.h2o:h2o-genmodel
的类型是聚甲醛和Maven把它在相同的方式becaue当<type>
缺少它从人工制品POM推断它。