Java gradle应用程序插件和缺少kafka storm Spoot的类路径
我正在尝试使用应用程序插件来运行Kafka Storm拓扑。 这是我的Java gradle应用程序插件和缺少kafka storm Spoot的类路径,java,gradle,apache-kafka,apache-storm,Java,Gradle,Apache Kafka,Apache Storm,我正在尝试使用应用程序插件来运行Kafka Storm拓扑。 这是我的build.gradle: apply plugin: 'java' apply plugin: 'application' mainClassName = "Library" repositories { jcenter() } dependencies { compile 'org.slf4j:slf4j-api:1.7.13', 'org.apache.storm:storm
build.gradle
:
apply plugin: 'java'
apply plugin: 'application'
mainClassName = "Library"
repositories {
jcenter()
}
dependencies {
compile 'org.slf4j:slf4j-api:1.7.13',
'org.apache.storm:storm-core:0.10.0',
'org.apache.storm:storm-kafka:0.10.0'
testCompile 'junit:junit:4.12'
}
当我启动/gradlew run
时,我得到:
Exception in thread "main" java.lang.NoClassDefFoundError: kafka/api/OffsetRequest
at storm.kafka.KafkaConfig.<init>(KafkaConfig.java:43)
at storm.kafka.SpoutConfig.<init>(SpoutConfig.java:40)
at Library.main(Library.java:21)
Caused by: java.lang.ClassNotFoundException: kafka.api.OffsetRequest
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 3 more
线程“main”java.lang.NoClassDefFoundError中出现异常:kafka/api/OffsetRequest
在暴风雨中。卡夫卡。卡夫卡图。(卡夫卡图。爪哇:43)
atstorm.kafka.SpoutConfig.(SpoutConfig.java:40)
在Library.main(Library.java:21)
原因:java.lang.ClassNotFoundException:kafka.api.OffsetRequest
位于java.net.URLClassLoader.findClass(URLClassLoader.java:381)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:424)
位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 3个以上
我是否以错误的方式配置了
应用程序插件?此故障表明缺少依赖项
也许将compile'org.apache.kafka:kafka_2.10:0.8.2.2'
添加到dependencies{}
块将帮助您取得进展
请注意,根据您正在运行的卡夫卡等的版本,卡夫卡的确切版本可能会有所不同
如果要排除可传递依赖项,可以将上面的compile…
语句更改为:
dependencies {
compile('org.apache.kafka:kafka_2.10:0.8.2.2') {
// transitive = false // No transitive dependencies
exclude group: 'foo' // Exclude specific dependencies
}
}
看就是这样。您认为是否有可能导入卡夫卡依赖项的子集而不是完整的发行版?是的,有两种方法可以做到这一点。我正在用建议更新我的答案谢谢,我实际上知道,我希望有一个专门针对卡夫卡+风暴的软件包。Tnx!