我开始了一个gradle项目 gradle init --type java-application
使用kotlin作为dsl的构建脚本,我只想添加 org.apache.kafka
图书馆
dependencies {
// This dependency is used by the application.
implementation("com.google.guava:guava:28.0-jre")
implementation("org.apache.kafka:kafka_2.10:0.8.0")
// Use JUnit test framework
testImplementation("junit:junit:4.12")
}
但是 gradle build
返回此:
* What went wrong:
Execution failed for task ':compileJava'.
> Could not resolve all files for configuration ':compileClasspath'.
> Could not find jmxtools.jar (com.sun.jdmk:jmxtools:1.2.1).
Searched in the following locations:
https://jcenter.bintray.com/com/sun/jdmk/jmxtools/1.2.1/jmxtools-1.2.1.jar
> Could not find jmxri.jar (com.sun.jmx:jmxri:1.2.1).
Searched in the following locations:
https://jcenter.bintray.com/com/sun/jmx/jmxri/1.2.1/jmxri-1.2.1.jar
这是怎么回事?与jcenter冲突?
1条答案
按热度按时间5cg8jx4n1#
正如在评论中已经提到的,升级Kafka版本将解决这个问题(问题转到@cricket\u007)。
这个问题的根本原因实际上不是kafka本身,而是版本1.2.15中的传递依赖log4j。这个log4j版本需要jmxtools和jmxri。由于一些许可问题,这些工件在maven central和jcenter上不可用。好消息是:你很可能根本不需要它。您只需重写log4j依赖项即可使用1.2.16(或更高版本)或排除jmxtools和jmxri。
你也可以在这篇博客文章中找到更多的见解:http://unitstep.net/blog/2009/05/18/resolving-log4j-1215-dependency-problems-in-maven-using-exclusions/
所以有三种方法可以解决这个问题:
使用最新的Kafka版本或
使用log4j版本>1.2.15或
排除jmxtools和jmxri
希望这能帮助我们把事情弄清楚