使用commons-configuration2添加配置至CompositeConfiguration时遇类未找到错误
解决commons-configuration2加载配置时的NoClassDefFoundError问题
你碰到的这个java.lang.NoClassDefFoundError: org/apache/commons/beanutils/BeanIntrospector异常,说白了就是项目缺了commons-beanutils这个依赖库。commons-configuration2内部会用到beanutils的属性自省功能,运行时找不到这个类就会抛出这个错误。
下面给你几种解决办法:
- Maven项目:直接在pom.xml里添加这个依赖,版本建议选1.9.x系列(和大部分commons-configuration2版本兼容):
<dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>1.9.4</version> </dependency>
- Gradle项目:在build.gradle的dependencies块里加入:
implementation 'commons-beanutils:commons-beanutils:1.9.4'
- 手动管理jar的情况:去Apache Commons的官方仓库下载commons-beanutils的jar包,放到项目的类路径下就行。
另外提一句,commons-configuration2还依赖commons-logging、commons-lang3这些库,如果之后再出现类似的找不到类的错误,记得检查这些依赖有没有配齐。
你的代码逻辑本身是没问题的——用CompositeConfiguration合并系统配置和properties文件的思路很合理,补完依赖应该就能正常跑起来了。
内容的提问来源于stack exchange,提问作者Adam A
相关产品推荐
相关产品推荐

