Maven项目编译时找不到AvroCoder类,需补充什么依赖?
Maven项目编译时找不到AvroCoder类,需补充什么依赖?
嗨,我来帮你捋捋这个问题~
你遇到的cannot find symbol: class AvroCoder错误,核心原因是这个类根本不属于你现在引入的Apache Avro模块,它是Apache Beam SDK里的类!你之前查到的那个类定义其实是Beam的文档,不是Avro的,所以光加Avro的依赖肯定找不到它啦。
要解决这个问题,你需要在Maven里添加Apache Beam核心模块的依赖,因为AvroCoder就定义在beam-sdks-java-core这个模块中。具体的依赖配置如下:
<dependency> <groupId>org.apache.beam</groupId> <artifactId>beam-sdks-java-core</artifactId> <version>2.48.0</version> <!-- 这里要填和你项目匹配的Beam版本,建议用稳定版 --> <!-- 如果你的项目是部署到Beam运行环境(比如Dataflow),可以把scope设为provided,避免打包重复依赖 --> </dependency>
这里有两个小提醒:
- 版本号一定要和你项目中使用的Apache Beam版本保持一致,如果还没引入其他Beam依赖,选一个近期的稳定版(比如2.48.0)就好
- 如果你之后需要用Beam的Avro数据读写功能,可能还需要额外引入
beam-sdks-java-io-avro依赖,但仅解决当前找不到AvroCoder的问题,上面的核心依赖就足够了
另外,你给出的import列表里都是Avro本身的类,但代码里肯定用到了Beam的AvroCoder,记得确认包路径是org.apache.beam.sdk.coders.AvroCoder,别和Avro的其他类搞混咯~
备注:内容来源于stack exchange,提问作者Alexis Wilke
相关产品推荐
相关产品推荐

