Apache Beam升级到2.50.0时出现MemoryMonitorOptions缺失错误
解决Apache Beam 2.50.0升级后
mvn compile:exec报NoClassDefFoundError的问题 问题根源
org.apache.beam.sdk.options.MemoryMonitorOptions在Apache Beam 2.48.0版本中已被移除(此前已标记为废弃),升级到2.50.0后,项目中仍存在对该类的依赖,或Maven依赖缓存/ClassPath中残留了旧版本Beam包导致冲突。
解决步骤
全局清理旧类引用
搜索项目所有文件(Java代码、配置文件、pom.xml),找到所有MemoryMonitorOptions的引用并替换:- 若用于内存监控逻辑,改用Beam 2.48+提供的
ResourceHints或直接通过PipelineOptions的setWorkerMemoryMb()方法配置内存参数 - 移除pom.xml中任何显式依赖该类的配置
- 若用于内存监控逻辑,改用Beam 2.48+提供的
清理Maven依赖缓存
执行以下命令强制更新依赖,清除本地仓库中的旧版本Beam包:mvn clean install -U用
mvn dependency:tree检查依赖树,确保没有同时引入2.46.0和2.50.0版本的Beam模块,尤其是beam-sdks-java-core或beam-sdks-java-options修正
exec-maven-plugin配置
确保插件使用项目的Runtime ClassPath,避免自定义ClassPath引入旧依赖:<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>3.1.0</version> <configuration> <mainClass>你的主类全限定名</mainClass> <classpathScope>runtime</classpathScope> </configuration> </plugin>验证执行流程
先执行mvn clean compile确保编译无错误,再运行mvn compile:exec验证结果
内容的提问来源于stack exchange,提问作者Jaymik11
相关产品推荐
相关产品推荐

