gradle - 使用Gradle将org.apache.kafka添加到依赖项

标签 gradle apache-kafka log4j

我使用Kotlin作为构建脚本DSL从gradle init --type java-application开始了Gradle项目,我只想添加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冲突?

最佳答案

正如评论中已经提到的,升级kafka版本将解决此问题(问题转到@ cricket_007)。

该问题的根本原因实际上不是kafka本身,而是版本1.2.15中的可传递依赖项log4j。此log4j版本需要jmxtools和jmxri。由于某些许可问题,这些 Artifact 在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/

因此,有3种方法可以解决此问题:

  • 使用较新的kafka版本
  • 使用log4j版本> 1.2.15
  • 排除jmxtools和jmxri

  • 希望能帮助并使事情变得更清楚

    关于gradle - 使用Gradle将org.apache.kafka添加到依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59125102/

    相关文章:

    java - 如何配置 ProGuard 以尊重 Jackson 模型?

    java - 如何识别所有发射是否到达 bolt ?

    gradle - 在 Kotlin 多平台中使用 gradle shadow

    android - Gradle无法与Google map 同步

    javascript - 在服务器中运行node-rdkafka代码

    maven - Maven编译-错误log4j

    java - Log4j 挂起我的应用程序我做错了什么?

    linux - 为什么日志文件的扩展名为 swp?

    android - 无法解析 : com. google.android.gms :play-services-plus:7. 0.+ 安装存储库和同步项目

    apache-kafka - 在Storm中,如何将偏移量迁移到Kafka中的存储?