kafka所在服务器的JDK 与客户端的JDK 需要一致么?

traveling 发表于: 2016-08-09   最后更新时间: 2016-08-09 22:31:09   10,509 游览

client JDK 1.8 broker也是JDK 1.8 可以发送接收消息 但是当client换成JDK1.6 同样的代码 提示如下

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/kafka/common/utils/Utils : Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at kafka.utils.CoreUtils$.createObject(CoreUtils.scala:221)
    at kafka.producer.Producer.<init>(Producer.scala:61)
    at kafka.javaapi.producer.Producer.<init>(Producer.scala:26)
    at MyProducer.main(MyProducer.java:16)
发表于 2016-08-09
添加评论

不需要一致,高版本的client不向下兼容,要注意了。

半兽人 -> 半兽人 8年前

client至少1.7

traveling -> 半兽人 8年前

那jar问题怎么解决呢?假设kafka用JDK1.8,安装kafka 10.0.0,客户端用JDK1.6 ,那编写客户端代码,用kafka10.0.0的jar包不能用,只能最高用到0.8.0的jar包,那后期会出现api问题么?由于工程需要,客户端我只能用JDK1.6,但是kafka想用高版本,所以遇到这个问题,请指教。

小蕊 -> traveling 8年前

那你的客户端就不能使用10.0.0的了,只能用0.8以内的。kafka服务器可以用10.0.0的。

半兽人 -> traveling 8年前

客户端使用老的0.8的,scala版本的。服务器可以用最新的,因为向下兼容

你的答案

查看kafka相关的其他问题或提一个您自己的问题