Maven install 报错"程序包不存在"问题的解决方法
作者:快乐柠檬 发布时间:2021-05-27 06:08:06
概述
在mvn clean install时,控制台各种报错,大概有:
java:[8,52] 程序包com.xxx不存在
java:[98,27] 找不到符号 符号: 类 XXX 位置: 类XXX
[ERROR] COMPILATION ERROR :
Caused by: org.apache.maven.plugin.compiler.CompilationFailureException: Compilation failure
at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:858)
at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:129)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
备注:如果想要开启Maven的debug模式,可以加上-X 参数:
mvn clean install -Dmaven.test.skip=true -X | less
分析依赖关系可以使用:
mvn -X dependency:tree | less
后来,在日志中发现了一个警告:
[WARNING] The POM for com.xxx:jar:0.0.1-SNAPSHOT is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
说是一个jar包的pom无效,传递依赖项(如果有的话)将不可用。
也就是说,Maven的模块(Module) C 依赖了 B,而B又依赖了一个jar,B的pom无效,所以C编译时就报错了,各种找不到类、找不到包
同时,观察到编译时,会从 * 拉取xml文件:
Downloading: http://xx.xx.xx.xx:8080/nexus/content/repositories/snapshots/xx/xx/xx/xx/0.0.1-SNAPSHOT/maven-metadata.xml
解决方法
B层Module的引用中,去掉第三方的jar,寻找一个Maven中央仓库可以引用到的jar代替;
在项目根目录,mvn clean deploy,把C层引用到的jar包传到 * 上面;
这次再运行mvn clean install -Dmaven.test.skip=true,发现通过,问题解决。
彩蛋
如果用了以上的方法,还是没有编译通过,还有一个不是办法的办法,但是实测有效:
可以找另一台编译通过的电脑,整个拷贝这台电脑的.m2/repository文件夹到自己电脑对应的maven仓库地址,然后再编译。
其他报错解决方法
1.错误场景:
项目为springboot项目,maven聚合工程,分为app、api、common、gongqiu四个项目,app、api、common的父类是gongqiu,app和api依赖common,打包时报错common中的程序包xxx不存在,错误信息如下:
解决办法有两个:
1.将ROOT中的spring-boot-maven-plugin更换成org.apache.maven.plugins,如下所示:
更换为
2.将spring-boot-maven-plugin的版本降低,如下所示:
运行结果:
来源:https://blog.csdn.net/limenghua9112/article/details/79480812
猜你喜欢
- springboot集成swagger3swagger3的springboot启动器jar包<!-- https://mvnrepos
- 做快递面单打印模板,快递要求纸张大小100 x 150mm。PageSize.A4=595 x 842A4尺寸=210mm×297mm故设置
- 可以根据执行时间打印sql语句,打印的sql语句是带参数的,可以拷贝到查询分析器什么的直接运行package mybatis;import
- 今天我们来讨论如何在项目开发中优雅地使用RocketMQ。本文分为三部分,第一部分实现SpringBoot与RocketMQ的整合,第二部分
- SqlssionFactory1.SqlSessionFactory是MyBatis的关键对象,它是个单个数据库映射关系经过编译后的内存镜像
- 不同点:不能直接实例化接口。接口不包含方法的实现。接口可以多继承,类只能单继承。类定义可以在不同的源文件之间进行拆分。相同点:接口、类和结构
- Spring depends-on的使用通过在XML中的<bean>里配置depends-on属性或者在一个类上使用注解@Dep
- 1.@RequestMapping的介绍通过@RequestMapping,我们可以把请求地址和方法进行绑定的,可以在类、方法上进行声明。类
- 概述最近在对之前写的一个 Spring Boot 的视频网站项目做功能完善,需要利用 FFmpeg 实现读取视频信息和自动截图的功能,查阅资
- 序章简介:bean的加载控制指根据特定情况对bean进行选择性加载以达到适用项目的目标。根据之前对bean加载的八种方式,其中后面四种是可以
- 1:先检查 字段有没有加上注解 @TableField(fill = FieldFill.INSERT_UPDATE)@TableField
- System.out.print("\b") 会在控制台下往回删掉一个字符,如果你想回删多个字符就打印多个 "
- 前序(先序)遍历中序遍历后续遍历层序遍历如图二叉树:二叉树结点结构public class TreeNode { int val
- 短网址,忽然一下子就冒出来的东西,长长的一个URL,提交过去,出来就只有短短的一个URL了,看起来似乎挺神奇,其实简单分析一下,明白其中的原
- 一、材料准备1、jdk1.8的安装包2、maven安装包3、idea工具二、配置jdk1.8环境变量1.jdk下载jdk下载网址(点击此链接
- 相信对于打印三角形都没什么难度,只需要利用for循环嵌套使用就行但是对于打印圆形和三角形不同因为到圆心距离相等的点一般不会横坐标和纵坐标都为
- 一、@ConditionalOnClass() Spring中存在指定class对象时,注入指定配置和ConditionalOnBean()
- ArrayList线程不安全怎么办?有三种解决方法:使用对应的 Vector 类,这个类中的所有方法都加上了 synchronized 关键
- 本文实例为大家分享了java模拟斗地主发牌的具体代码,供大家参考,具体内容如下1.案例介绍规则:组装54张扑克牌54张牌顺序打乱三个玩家参与
- settings.xml有什么用?如果在Eclipse中使用过Maven插件,想必会有这个经验:配置settings.xml文件的路径。se