添加Maven依赖后仍出现org.apache.commons.logging.LogFactory类找不到问题求助
解决
java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory问题 从你的错误日志和pom配置来看,核心问题是JavaFX应用运行时没有将commons-logging依赖纳入类路径——虽然你已经在pom中添加了依赖,但JavaFX 11+的模块化运行机制需要专门的Maven插件来处理第三方依赖的加载,而你目前注释掉了javafx-maven-plugin,这是导致问题的关键。
下面是具体的解决步骤:
1. 恢复并正确配置javafx-maven-plugin
JavaFX 11+是模块化框架,普通的Maven运行方式无法自动将第三方依赖加入运行类路径,必须通过javafx-maven-plugin来统一管理。取消注释你pom中的插件,并补充完整配置:
<plugin> <groupId>org.openjfx</groupId> <artifactId>javafx-maven-plugin</artifactId> <version>0.0.6</version> <configuration> <mainClass>com.base.Launcher</mainClass> <!-- 若不需要打包成自定义镜像,可注释executable配置 --> <!-- <executable>C:\libs\jdk-11\bin\jlink</executable> --> <!-- 明确声明应用需要的JavaFX模块 --> <modules> <module>javafx.controls</module> <module>javafx.fxml</module> <module>javafx.web</module> <module>javafx.swing</module> </modules> </configuration> </plugin>
2. 验证依赖是否正确引入
运行以下Maven命令检查依赖树,确认commons-logging已经被正确拉取,且没有版本冲突:
mvn dependency:tree
如果发现其他依赖引入了旧版本的commons-logging导致冲突,可以在你的依赖中添加排除规则:
<dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version> <exclusions> <!-- 替换为实际冲突的依赖坐标 --> <exclusion> <groupId>...</groupId> <artifactId>...</artifactId> </exclusion> </exclusions> </dependency>
3. 使用Maven命令运行应用
不要直接用IDE的普通运行按钮启动,而是通过Maven插件命令启动,确保所有依赖被正确加载到运行类路径:
mvn clean javafx:run
4. IDE运行配置检查(可选)
如果习惯用IDE直接运行,需要在VSCode/IntelliJ的运行配置中确认Maven依赖已被包含:
- IntelliJ:打开Run/Debug Configurations → 选中你的JavaFX配置 → 在
Classpath标签下,确保Maven Dependencies已添加到类路径 - VSCode:检查
.vscode/launch.json中的classpath配置,确保包含${workspaceFolder}/target/dependency/*
按照以上步骤操作后,org.apache.commons.logging.LogFactory类应该能被正确找到,应用可以正常启动。
内容的提问来源于stack exchange,提问作者bibu3344
相关产品推荐
相关产品推荐

