【问题标题】:How to find which scala version needs to be used for each kafka release如何查找每个 kafka 版本需要使用哪个 scala 版本
【发布时间】:2014-09-27 19:00:06
【问题描述】:

目前我们在生产中使用 kafka-0.7.2(https://clojars.org/org.clojars.paul/core-kafka_2.8.0) 和 scala 版本 2.8.0。

我们很高兴看到 kafka 0.8.1.1,因此我们遵循了上述博客中的生产者 (https://cwiki.apache.org/confluence/display/KAFKA/0.8.0+Producer+Example) 代码和消费者 (https://cwiki.apache.org/confluence/display/KAFKA/Consumer+Group+Example) 代码。

此代码导致缺少 scala.serializer 类的错误,因此我搜索并获得了 scala-2.10.3(Eclipse scala.object cannot be resolved) 将解决此问题的信息。

再次运行此代码时出现错误

[WARNING] 
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:293)
        at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.NoClassDefFoundError: scala/reflect/ClassManifest
        at kafka.utils.Log4jController$.<init>(Log4jController.scala:29)
        at kafka.utils.Log4jController$.<clinit>(Log4jController.scala)
        at kafka.utils.Logging$class.$init$(Logging.scala:29)



will linger despite being asked to die via interruption
[WARNING] NOTE: 3 thread(s) did not finish despite being asked to  via interruption. This is not a problem with exec:java, it is a problem with the running code. Although not serious, it should be remedied.
[WARNING] Couldn't destroy threadgroup org.codehaus.mojo.exec.ExecJavaMojo$IsolatedThreadGroup[name=packageName,maxpri=10]
java.lang.IllegalThreadStateException
        at java.lang.ThreadGroup.destroy(ThreadGroup.java:775)
        at org.codehaus.mojo.exec.ExecJavaMojo.execute(ExecJavaMojo.java:328)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)

不知道为什么会出现这个错误,

改变 pom.xml

<dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka_2.9.2</artifactId>
            <version>0.8.1.1</version>
            <scope>compile</scope>
            <exclusions>
                <exclusion>
                    <groupId>com.sun.jmx</groupId>
                    <artifactId>jmxri</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.sun.jdmk</groupId>
                    <artifactId>jmxtools</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>javax.jms</groupId>
                    <artifactId>jms</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-library</artifactId>
            <version>2.10.3</version>
        </dependency>

我还从其中一个站点获得信息,kafka 0.8.1.1 将支持不同版本的 scala,但我不知道为什么此 scala 版本 (2.10.3) 不支持它。

How can we find for  x kafka version, y scala version will work

我还发现在 kafka-0.8.1.1 的 gradle.properties 中

group=org.apache.kafka
version=0.8.1.1
scalaVersion=2.8.0
task=build

这里提到 2.8.0 的 scalaVersion 是为了 ?

提前致谢

【问题讨论】:

    标签: spring maven scala-2.8 apache-kafka


    【解决方案1】:

    我已经删除了 scala 依赖项,因为它在内部使用 scala。现在它可以正常工作,并且 zookeeper 连接的属性名称也有一些变化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-29
      • 1970-01-01
      • 1970-01-01
      • 2013-01-12
      • 2011-04-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多