Skip to main content
 首页 » 编程设计

Scala Jar 文件无法正常用于 Kafka Streams 应用程序

2025年05月04日67insus

我使用 IntelliJ IDEA 本身和 SBT 为在 Scala 中编码的 Kafka Streams 应用程序制作了一个 jar 文件。以下是我一直面临的问题,到目前为止我还没有成功:

首先,我使用 IntelliJ IDEA 制作了一个 jar 文件。在运行 Jar 文件时,它给出了以下错误:

java.lang.ClassNotFoundException: Main ...



以下是我在 IntelliJ IDEA 中制作 Jar 文件的步骤:
  • 从文件菜单中选择项目结构。
  • 进入“工件”选项卡。
  • 单击 + 按钮。
  • 选择主类和META-INF目录位置
  • 添加了所有 Scala 库和依赖项(并确保包含 META-INF 目录)
  • 应用设置并构建工件。
  • 使用 Scala 命令运行 Jar。给出了上述错误。

  • 之后我尝试使用 SBT 制作 Jar 文件。我在项目目录中创建了一个 assembly.sbt 文件,然后我重新导入了该项目。之后,我执行了以下命令:
  • sbt 清洁
  • sbt 包
  • sbt 组件

  • 它制作了一个 Jar 文件。这一次,问题在于它没有随机选择一些 Kafka 库。有时,它会抛出,例如,未找到 KafkaStreams。然后我将尝试重建 jar,然后新 jar 会抛出 StreamsBuilder not found。我一直在尝试和总结,以下是我记得的一些错误:

    NoClassDefFoundException ..../KafkaStreams
    NoClassDefFoundException ..../StreamsBuilder etc.



    这里的“...”表示完整的包名称/路径。

    构建.sbt:
    name := "StreamsNew" 
     
    version := "0.1" 
     
    scalaVersion := "2.12.7" 
     
    mainClass := Some("src/main/scala/StreamsDemo/Main.scala") 
     
    libraryDependencies ++= Seq( 
     //"org.slf4j" % "slf4j-simple" % "1.7.28", 
      "org.apache.kafka" % "kafka-streams" % "2.3.0", 
      "org.apache.kafka" %% "kafka-streams-scala" % "2.3.0", 
    ) 
    

    程序集.sbt:
    addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.10" ) 
    resolvers += Resolver.url("bintray-sbt-plugins", url("http://dl.bintray.com/sbt/sbt-plugin-releases"))(Resolver.ivyStylePatterns) 
    

    斯卡拉版本:2.12.7
    SBT 版本:1.6.3

    请您参考如下方法:

    您不需要使用 sbt package ,因为您需要一个胖 jar(用于依赖项)。为此,您只需要执行 sbt cleansbt assembly .更重要的是,主类路径应该只包含 StreamsDemo.Main而不是整个路径。现在,尝试运行通过组装制作的 jar。此外,您不需要 assembly.sbt 中的解析器。