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


猜你喜欢
- 本文实例讲述了android开发之listView组件用法。分享给大家供大家参考,具体如下:关于Android ListView组件中and
- 这篇文章主要介绍了Java import导入及访问控制权限修饰符过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考
- 主界面xml文件<RelativeLayout xmlns:android="http://schemas.android.
- 常用依赖 //1.直接依赖第三方开源库,一般是托管在 jitpack 或者 jcenter implementation 'com.
- 这段时间想到一个有趣的功能,就是在Android的代码编译期间进行一些骚操作,来达到一些日常情境下难以实现的功能,比如监听应用中的所有onC
- 介绍:%是求余运算符,也叫模除运算符,用于求余数。%要求两个操作数均为整数(或可以隐式转换成整数的类型)。标准规定:如果%左边的操作数为负数
- 1.以G71列车为例,首先对车次站台进行占位编码(从1开始到最后一站递加)对以上占位简单描述以下:G71总共18个站点那么我们的单个座位的座
- Java doGet, doPost方法和文件上传index.html<!DOCTYPE html><html lang=
- 一、冻结列DataGridViewColumn.Frozen属性为true时,该列左侧的所有列被固定,横向滚动时固定列不随滚动条滚动而左右移
- 本文实例讲述了java Swing组件setBounds()简单用法。分享给大家供大家参考,具体如下:先看API:public void s
- 本文主要带大家看看Object类中一些常用方法的API文档的介绍和JDK中的源码。1.equals方法1.API中equals方法的介绍2.
- 三目条件运算公式为 x?y:z 其中x的运算结果为boolean类型,先计算x的值,若为true,则整个三目运算的结果为表达式y
- Runtime.getRuntime().exec 路径包含空格1. 现象java代码通过Runtime.getRuntime().exec
- 最近公司要求开发工具要用Idea,作为一个eclipse的老员工,记录一下Idea中遇到的坑刚开始用Idea从Git上导入一个项目时,遇到了
- 在java中调用xls格式化xml 使用javax.xml.transform.Transformer,将xml用xls格式化为另一种xml
- android 修改launcher行数和列数Launcher3桌面的行数和列数都是在InvariantDeviceProfile.java
- 一、实验目的1. 掌握各种高级UI控件的基本使用;2. 能够实现Tab切换效果。二、实验任务1. 根据原型图设计界面;2. 实现Tab切换;
- 本文实例讲述了Android编程简单实现九宫格。分享给大家供大家参考,具体如下:实现的步骤1. 一个整体的容器部分。就是上图中包括整个图片项
- using System.Drawing;using System.Drawing.Imaging;using System.IO;usin
- 序列化序列化:将对象转换为二进制序列在网络中传输或保存到磁盘反序列化:从网络或磁盘中将二进制序列转换为对象注意:对象必须实现Serializ