Java 无法在卡夫卡制作者中实例化GenericRecord,以便将avro流式传输到主题
我试图创建一个Java制作人,将Avro流式传输到卡夫卡主题。 我已经尝试重现了中介绍的示例 但是找不到GenericRecord类(如下所示)Java 无法在卡夫卡制作者中实例化GenericRecord,以便将avro流式传输到主题,java,maven,apache-kafka,avro,Java,Maven,Apache Kafka,Avro,我试图创建一个Java制作人,将Avro流式传输到卡夫卡主题。 我已经尝试重现了中介绍的示例 但是找不到GenericRecord类(如下所示) import org.apache.avro.Schema; import org.apache.avro.generic.GenericData; import org.apache.avro.generic.GenericRecord; Schema.Parser parser = new Schema.Parser(); Schema sche
import org.apache.avro.Schema;
import org.apache.avro.generic.GenericData;
import org.apache.avro.generic.GenericRecord;
Schema.Parser parser = new Schema.Parser();
Schema schema = parser.parse(userSchema);
GenericRecord avroRecord = new GenericData.Record(schema);
下面是报告的错误:
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/avro/generic/GenericRecord
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
at java.lang.Class.getMethod0(Class.java:3018)
at java.lang.Class.getMethod(Class.java:1784)
at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: org.apache.avro.generic.GenericRecord
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)
... 7 more
这是我的pom.xml文件
这会产生以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/kafka/clients/producer/KafkaProducer
at com.giorgos.currencies.TestFX.main(TestFX.java:103)
Caused by: java.lang.ClassNotFoundException: org.apache.kafka.clients.producer.KafkaProducer
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)
... 1 more
这是我运行程序的方式:
java -cp target/giorgos-fx_currencies-1.0-SNAPSHOT.jar com.giorgos.currencies.TestFX command-line-argument
因为您使用的是shade插件,所以这些类是这个文件的一部分
target/uber-giorgos-fx_currencies-1.0-SNAPSHOT.jar
使用它来运行代码 Confluent 4.0的卡夫卡版本是1.0.0,而Avro版本是1.8.2在任何情况下,如果你想使用Avro类,你应该运行uber jarloaded@cricket_007我已经将卡夫卡和阿夫罗的版本分别设置为1.0.0和1.8.2,但运气不好。见更新的问题。当注释掉GenericRecord时,KafkaProducer也会出现同样的行为。不确定为什么不克隆/复制一些示例代码,您可能希望在与Kafka/Confluent版本混淆之前验证代理版本
java -cp target/giorgos-fx_currencies-1.0-SNAPSHOT.jar com.giorgos.currencies.TestFX command-line-argument
target/uber-giorgos-fx_currencies-1.0-SNAPSHOT.jar