我为一个在Scala中编码的Kafka应用程序创建了一个jar文件,它使用IntelliJ IDEA本身,然后使用SBT。以下是我一直面临的问题,到目前为止我还没有成功:
首先,我使用IntelliJ IDEA创建了一个jar文件。在运行Jar文件时,它会出现以下错误:
java.lang.ClassNotFoundException:主要..。
下面是我在IntelliJ IDEA中创建Jar文件所采取的步骤:
button.
之后,我尝试使用SBT制作Jar文件。我在项目目录中创建了一个assembly.sbt文件,然后重新导入项目。之后,我执行了以下命令:
它制作了一个Jar文件。这一次,问题是它没有随机挑选一些卡夫卡图书馆。例如,有时它会抛出没有找到的KafkaStreams。然后,我将尝试重建jar,然后新jar将抛出StreamsBuilder not。我一直在努力总结,以下是我记得的一些错误:
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
发布于 2020-01-23 09:22:31
您不需要使用sbt package,因为您需要一个胖jar (用于依赖项)。为此,只需执行sbt clean和sbt assembly。更重要的是,主类路径应该只包含StreamsDemo.Main,而不是整个路径。现在,尝试运行通过程序集制作的罐子。另外,您不需要assembly.sbt中的解析器。
https://stackoverflow.com/questions/59871892
复制相似问题