【问题标题】:Scala Jar file not working properly for Kafka Streams appScala Jar 文件不适用于 Kafka Streams 应用程序
【发布时间】:2020-05-09 07:57:37
【问题描述】:

我使用 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 等

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

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

【问题讨论】:

  • 你可以单独在 IntelliJ 中运行应用程序吗?虽然 Scala 没有任何问题,但您需要使用它吗?大量带有 Gradle 的 Java 入门示例。 Kotlin 可以为您减少冗长。 SpringBoot 可以帮助你更快地得到一个可执行程序
  • @cricket_007 是的,它在 IntelliJ IDEA 中运行非常好。使用 Scala 是客户的要求,这就是原因。
  • 我猜还有 sbt 吗?你能分享任何代码吗?
  • 你可以运行jar tf file.jar | grep kafka查看包中的是什么
  • edit问题并适当地格式化代码

标签: scala intellij-idea apache-kafka sbt executable-jar


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2018-07-17
    • 2016-12-27
    • 1970-01-01
    • 2022-10-13
    • 2022-01-23
    • 2013-08-17
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多