Eclipse环境下Maven整合OWLAPI出现slf4j依赖冲突如何解决?
问题1:SLF4J桥接包冲突解决
你目前只排除了OWLApi依赖下的两个冲突包,大概率项目中其他依赖也引入了log4j-over-slf4j和slf4j-log4j12,需要先定位所有引入这两个包的依赖:
- 执行Maven依赖树命令排查冲突来源:
# Linux/Mac执行 mvn dependency:tree | grep slf4j # Windows cmd执行 mvn dependency:tree | findstr slf4j - 对所有输出中包含
slf4j-log4j12和log4j-over-slf4j的父依赖,都添加对应的exclusion排除规则,不要只给OWLApi加排除 - 日志实现统一保留一个即可:如果用logback就保留
logback-classic,用log4j2就保留log4j-slf4j-impl,不要同时存在多个SLF4J实现包
问题2:无.class文件、编译失败解决
- 先检查Maven项目结构是否符合标准:默认源码要放在
src/main/java目录下,如果你是老项目转Maven,源码放在其他路径,需要在pom的build节点指定源码路径:<build> <!-- 替换成你实际的源码存放目录 --> <sourceDirectory>src</sourceDirectory> <plugins> <!-- 配置编译插件,指定和你项目匹配的JDK版本 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <!-- 替换成你的JDK版本,比如11、17 --> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build> - 执行
mvn clean compile命令,仔细查看控制台输出的编译错误信息,优先解决语法错误、类找不到这类编译级别的问题 - 如果是依赖缓存损坏导致的类找不到,执行
mvn clean install -U强制更新所有依赖后再重新编译
内容的提问来源于stack exchange,提问作者Rednayt
相关产品推荐
相关产品推荐

