Scala Jar 文件无法为 Kafka Streams 应用程序正常工作

Scala Jar file not working properly for Kafka Streams app

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

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

java.lang.ClassNotFoundException: Main ...

以下是我在 IntelliJ IDEA 中制作 Jar 文件的步骤:

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

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

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

此处'...'表示完整包name/path。

build.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",
)

assembly.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)

Scala 版本:2.12.7
SBT版本:1.6.3

您不需要使用 sbt package,因为您需要一个 fat jar(用于依赖项)。为此,您只需要执行 sbt cleansbt assembly。更重要的是,主 class 路径应该只包含 StreamsDemo.Main 而不是整个路径。现在,试试运行组装出来的罐子。此外,您不需要 assembly.sbt.

中的解析器