【问题标题】:IllegalAccessError: tried to access method org.apache.avro.specific.SpecificData.<init>()IllegalAccessError: 试图访问方法 org.apache.avro.specific.SpecificData.<init>()
【发布时间】:2019-07-05 17:17:31
【问题描述】:

使用 Avro 将数据序列化为 byte[] 并反序列化数据。 https://cwiki.apache.org/confluence/display/AVRO/FAQ#FAQ-HowcanIserializedirectlyto/fromabytearray?显示示例用法。

SpecificDatumReader<User> reader = new SpecificDatumReader<User>(User.getClassSchema());

以上行导致以下错误

IllegalAccessError: tried to access method org.apache.avro.specific.SpecificData.<init>() from class com.abc.schema.generated.User

任何指向这里可能出错的地方?编译时没有发现错误。

【问题讨论】:

  • Confluent 已经为 Kafka 提供了 Avro 序列化程序。你想自己写吗?
  • 在我的情况下不使用模式注册表。即使不使用模式注册表,这些也会起作用吗?
  • 这应该可以工作,虽然,我不认为它经常在 Kafka 中完成。

标签: java apache-kafka avro


【解决方案1】:

这可能是因为您的类路径中有旧版本的 Avro。要检查,请使用-verbose:class 参数运行您的程序,并在输出中查找SpecificData 的实例。示例:

 java -verbose:class -jar your_jar.jar

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 2016-05-31
    • 2020-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多