使用的是maven-embedder 3.9.6版本,报错:Exception in thread "main" java.lang.NoSuchMethodError: 'org.codehaus.plexus.ContainerConfiguration org.codehaus.plexus.ContainerConfiguration.setClassPathScanning(java.lang.String)' at org.apache.maven.cli.MavenCli.container(MavenCli.java:634) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:277) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:248) at cn.com.nominee.service.PomParserService.main(PomParserService.java:12)
时间: 2025-06-23 15:23:05 浏览: 16
<think>嗯,用户遇到了一个Maven的问题,具体是使用maven-embedder 3.9.6时出现java.lang.NoSuchMethodError: 'org.codehaus.plexus.ContainerConfiguration.setClassPathScanning'错误。我需要先理解这个错误的根源。根据引用[2],类似的问题是因为Maven版本和IDEA版本不兼容,用户之前通过降级Maven到3.6.1解决了问题。但这次用户提到的是maven-embedder 3.9.6,可能需要类似的解决方案。
首先,我应该检查这个错误的原因。NoSuchMethodError通常意味着某个类的方法在运行时不存在,这可能是因为依赖的库版本不兼容。setClassPathScanning方法可能在较新版本的plexus组件中被移除或更改,而maven-embedder 3.9.6可能依赖了一个不兼容的plexus版本。
接下来,用户可能需要降级Maven到与当前环境兼容的版本,比如3.6.x系列,如引用[2]提到的3.6.1。另外,检查依赖冲突也是关键,可能需要排除某些传递依赖,或者强制指定正确的版本。例如,plexus-classworlds或plexus-container的版本可能需要调整。
另外,用户可能没有正确配置settings.xml文件,如引用[1]提到的,检查Maven配置文件是否有误,或者本地仓库是否存在损坏的jar包,清理后重新下载依赖可能有效。
最后,建议用户确认开发环境(如IDEA版本)是否与Maven 3.9.6兼容,或者是否有官方公告指出该问题,可能需要升级IDEA到支持新Maven的版本。</think>### 解决方案
#### 问题分析
`NoSuchMethodError: ContainerConfiguration.setClassPathScanning`通常是由于**依赖版本冲突**引起的。Maven-embedder 3.9.6可能依赖的`plexus-classworlds`或`plexus-container`组件版本与当前环境不兼容[^2]。此方法`setClassPathScanning`在较新的Plexus库中可能已被移除或修改。
---
#### 分步解决
1. **降级Maven版本**
根据引用[2]的经验,将Maven版本降级到与开发工具(如IntelliJ IDEA)兼容的版本:
- 卸载当前Maven 3.9.6
- 下载并安装Maven 3.6.x系列(如3.6.3)[^1]
- 修改环境变量或IDE配置指向新版本
2. **检查依赖冲突**
在项目的`pom.xml`中排查冲突的依赖项:
```xml
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-embedder</artifactId>
<version>3.9.6</version>
<!-- 排除冲突的Plexus依赖 -->
<exclusions>
<exclusion>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-classworlds</artifactId>
</exclusion>
</exclusions>
</dependency>
```
3. **强制指定Plexus版本**
如果必须使用Maven 3.9.6,在`pom.xml`中手动指定兼容的Plexus版本:
```xml
<properties>
<plexus.classworlds.version>2.6.0</plexus.classworlds.version>
</properties>
<dependencies>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-classworlds</artifactId>
<version>${plexus.classworlds.version}</version>
</dependency>
</dependencies>
```
4. **清理本地仓库缓存**
删除本地Maven仓库中与`plexus`相关的损坏或冲突的JAR包(路径:`~/.m2/repository/org/codehaus/plexus`),然后重新构建项目。
---
#### 验证步骤
1. 在命令行执行 `mvn -v` 确认Maven版本已切换为3.6.x
2. 执行 `mvn clean install` 观察是否仍报错
3. 使用 `mvn dependency:tree` 检查依赖树是否排除冲突项
---
#### 附加建议
- 如果使用IntelliJ IDEA,建议升级到2021.x或更高版本以兼容Maven 3.9.6[^2]
- 参考官方Maven版本兼容性文档:[Maven Release Notes](https://maven.apache.org/docs/history.html)
---
阅读全文
相关推荐








