【问题标题】:Avro generated class: Cannot access class 'Builder'. Check your module classpath for missing or conflicting dependenciesAvro 生成的类:无法访问类“生成器”。检查您的模块类路径是否存在缺失或冲突的依赖项
【发布时间】:2021-11-29 09:23:11
【问题描述】:

跑步

val myAvroObject = MyAvroObject.newBuilder()

导致编译错误:

Cannot access class 'MyAvroObject.Builder'. Check your module classpath for missing or conflicting dependencies

我可以访问其他MyAvroObject 变量。更准确地说,诸如

之类的方法
val schema = MyAvroObject.getClassSchema()
val decoder = MyAvroObject.getDecoder()

编译得很好。更奇怪的是,我可以访问我的test/ 文件夹中的newBuilder(),但不能访问我的src/ 文件夹。

为什么在使用newBuilder() 时会出现编译错误?用于生成MyAvroObject 的avro-schema 的命名空间是否重要?

【问题讨论】:

    标签: kotlin avro


    【解决方案1】:

    Check your module classpath 通常意味着您的依赖项(您没有提供)被搞砸了。其中之一应该阅读implementation 而不是testImplementation,以便在main 源集中使用该方法,而不仅仅是test 源集 - 但是这个很可能与输入类、生成类的输出位置或类似@VisibleForTesting 的注释有关(看看它甚至生成了什么)。命令gradlew 还可以列出每个配置的依赖关系。生成器似乎被称为org.apache.avro.SchemaBuilder...只有avro-1.11.0.jaravro-tools-1.11.0.jar。使用“builder”设计模式,.newBuilder() 尝试返回内部类 Builder

    【讨论】:

      猜你喜欢
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-22
      • 2019-07-01
      • 2023-01-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多