我正试图开始一个新的sbtscala项目,并有以下几点 build.sbt
文件:
name := "ScalaKafkaStreamsDemo"
version := "1.0"
scalaVersion := "2.12.1"
libraryDependencies += "javax.ws.rs" % "javax.ws.rs-api" % "2.1" artifacts(Artifact("javax.ws.rs-api", "jar", "jar"))
libraryDependencies += "org.apache.kafka" %% "kafka" % "2.0.0"
libraryDependencies += "org.apache.kafka" % "kafka-streams" % "2.0.0"
因此,根据github repo,在2.0.0中,我应该看到我想要使用的scala类/函数等,但是它们似乎不可用。在intellij内我可以打开 kafka-streams-2.0.0.jar
,但我没有看到任何scala类。
我还要加一个jar吗?
就在我们讨论额外jar的时候,有人知道我需要包括什么jar才能使用 EmbeddedKafkaCluster
?
3条答案
按热度按时间dfuffjeb1#
看来你面临着一个悬而未决的问题
javax.ws.rs-api
一些java项目发生的依赖关系是使用sbt的scala项目的直接或可传递依赖关系。我遇到过使用apachespark的scala项目,最近遇到过kafka流(有和没有scalaapi)。对我来说,一个很好的解决方法就是简单地排除依赖项,然后再次显式地定义它。
请确保您使用的是最新和最强大的sbt(即截至本文撰写时的1.2.7)。
也就是说,在
build.sbt
应如下所示:在intellij内我可以打开
kafka-streams-2.0.0.jar
,但我没有看到任何scala类。我还要加一个jar吗?您只需要以下依赖项:
bq9c1y662#
您需要的工件是kafka streams scala:
(请使用2.0.1或更好的2.1.0,因为2.0.0有一些scala api错误)
为了回答后一个问题,它在测试jar中,您可以使用分类器来解决这个问题:
但请注意,这是一个内部类,可能会在不另行通知的情况下进行更改(或删除)。如果可能,强烈建议您在test utils中使用topologytestdriver:
mefy6pfw3#
您还可以使用以下解决方法,这在我的情况下是有效的-这里有更多详细信息