我正在尝试启动一个新的SBT Scala项目,并且在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
?
答案 0 :(得分:7)
您需要的工件是kafka-streams-scala:
libraryDependencies += "org.apache.kafka" %% "kafka-streams-scala" % "2.0.1"
(请使用2.0.1,甚至更好的2.1.0,因为2.0.0有一些scala API错误)
要回答后一个问题,它位于测试罐中,您可以使用分类器解决该问题:
libraryDependencies += "org.apache.kafka" %% "kafka-streams" % "2.0.1" % "test" classifier "test"
但是请注意,这是一个内部类,如有更改,恕不另行通知。如果可能的话,强烈建议您在测试实用程序中使用TopologyTestDriver代替:
libraryDependencies += "org.apache.kafka" %% "kafka-streams-test-utils" % "2.0.1" % "test"
答案 1 :(得分:2)
似乎您面临着未解决的func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell: EventCommentsCustom = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! EventCommentsCustom
guard let release = array[exist: indexPath.section] else { return cell }
if release.user == "condition" {
let image = UIImage()
let imageView = UIImageView(image: image)
imageView.sd_setImage(with: URL(string: "https://example.com/" + TegKeychain.get("profile_pic")!))
imageView.frame = CGRect(x: 20, y: 10, width: 50, height:50)
imageView.layer.borderWidth = 0.4
imageView.layer.masksToBounds = false
imageView.layer.borderColor = UIColor.gray.cgColor
imageView.layer.cornerRadius = 25
imageView.clipsToBounds = true
imageView.tag = 3
cell.addSubview(imageView)
let button = UIButton(frame: CGRect(x: 90, y: 10, width: 200, height: 50))
button.contentHorizontalAlignment = .left
button.setTitleColor(UIColor.lightGray, for: .normal)
button.setTitle(NSLocalizedString("Say something...", comment: ""), for: .normal)
button.addTarget(self, action: #selector(EventComments.openInput), for: .touchUpInside)
button.tag = 3
cell.addSubview(button)
} else {
if let viewWithTag = cell.viewWithTag(3) {
if viewWithTag is UIImageView {
print("DONE")
viewWithTag.removeFromSuperview()
}
}
if let viewWithTag = cell.viewWithTag(3) {
if viewWithTag is UIButton {
print("DONE")
viewWithTag.removeFromSuperview()
}
}
}
return cell
}
依赖性问题,该问题发生在某些Java项目中,这些Java项目是使用sbt的Scala项目的直接或可移植依赖性。我在使用Apache Spark的Scala项目以及最近在Kafka Streams(带有和不带有Scala API)中遇到过这种情况。
一种对我有效的解决方法是简单地排除依赖项,然后再次明确定义它。
javax.ws.rs-api
确保使用sbt的最新版本和最新版本(即,撰写本文时为 1.2.7 )。
话虽如此,excludeDependencies += ExclusionRule("javax.ws.rs", "javax.ws.rs-api")
libraryDependencies += "javax.ws.rs" % "javax.ws.rs-api" % "2.1.1"
中的依赖项应如下:
build.sbt
在IntelliJ中,我可以打开
scalaVersion := "2.12.8" val kafkaVer = "2.1.0" libraryDependencies += "org.apache.kafka" % "kafka-streams" % kafkaVer libraryDependencies += "org.apache.kafka" %% "kafka-streams-scala" % kafkaVer excludeDependencies += ExclusionRule("javax.ws.rs", "javax.ws.rs-api") libraryDependencies += "javax.ws.rs" % "javax.ws.rs-api" % "2.1.1"
,但没有看到任何Scala类。我需要添加另一个JAR吗?
您需要的依赖项如下:
kafka-streams-2.0.0.jar
答案 2 :(得分:0)
您还可以使用以下变通方法,这种变通方法适用于我的情况-更多详细信息 here
import sbt._
object PackagingTypePlugin extends AutoPlugin {
override val buildSettings = {
sys.props += "packaging.type" -> "jar"
Nil
}
}