Maven问题汇总
1.mvnw导致idea无法识别依赖
我在官网 spring.io 下载了初始化项目,或者就是用 idea 新建一个 springboot 项目,总是无法识别src目录,很是奇怪。
【尝试方案】
(1)降低jdk版本,重新安装。
(2)关闭重启,还是不行。
【解决方案】
后来我把 .mvn、HELP.md、mvnw、mvnw.cmd 这几个文件删除了,就可以重新下载依赖了,还真是麻烦。
【1】.idea打开项目src文件夹没有了
【2】.使用IDEA创建SpringBoot3项目的时候遇到的版本问题
【3】.idea导入springboot项目出现的问题
【4】.IDEA导入项目不显示项目结构src解决
【5】.Intellij Idea打开项目不能src(完整显示树形目录)
2.Import does not have member field ‘com.sun.tools.javac.tree.JCTree qualid’
maven 从15.0.2升级到 21.0.2,结果原先的代码重新打包就不行了。
【解决方案】
找到相关的 lombok 依赖,然后进行版本升级。
1 | <dependency> |
【1】.JDK 21报错:NoSuchFieldError解决方案 - Lombok版本兼容性问题解析
【2】.maven项目提示程序包sun.tools.tree不存在
【3】.lombok 1.8.26 incompatible with JDK21 这里弄了一个 edge-SNAPSHOT 版本,但是我无法下载这个东西。
【4】.Java 21运行报错Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field ‘com.sun.tools.
3. Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.11.0:compile (default-compile) on project drone: Fatal error compiling: 错误: 不支持发行版本 21
进行项目打包的时候,出现了这个问题:还有就是 不支持发行版本 17。
【解决方案】
需要将系统默认的 jdk 版本改为 jdk21 ,这样在打包的时候就不会报错了。
【1】.解决IntelliJ IDEA报错Error: java: 错误: 不支持发行版本 XX
【2】.使用openjdk17编译时报错:Fatal error compiling: 错误: 不支持发行版本 1.17 java -version正常,mvn -v正常。最后发现,没有javac命令…也就是说这个基础镜像里没有openjdk-devel的包,最后安装上该包后,可以正常编译
【3】.不支持java17 这里是不支持java17
4.zip END header not found
在idea中进行依赖加载,出现了:读取/Users/bibichuan/.m2/repository/javax/activation/activation/1.1.1/activation-1.1.1.jar时出错; zip END header not found。后来我把依赖注释掉,结果出现了:javax.activation:javax.activation-api:jar:1.1.1 was not found in https://repo.maven.apache.org/maven2。
主要的问题就是需要我在模块中引入 jeecg-system-biz 这个东西,但是随之而来的就是一系列的问题。
1 | <dependency> |
【尝试方案】
(1) 找到 idea 默认的 maven 的路径:/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3,然后我修改为了自己的安装路径,然后修改了其中的 setting.xml ,结果还是无效。
(2) 我重新处理了这个idea 的maven,但是我里面配置的 镜像始终无法修改,我也不知道默认的到底在哪里搞的。后来我发现了,只要在pom.xml中配置了 repositories,似乎就不再走 setting.xml 中的配置了。
(3) 当我配置了阿里云的镜像的时候,还有问题:Could not find artifact javax.activation:javax.activation-api:pom:1.1.1 in aliyun,但是死活又找不到这个问题的解决方案,这还真是难办了,陷入了一个死循环中。
(4) 尝试修改依赖源,结果也还是无效
1 | <repositories> |
【解决方案】
最后经过不断的尝试,我还是通过排除 javax.activation-api 依赖解决了这个问题。
1 | <dependency> |
【1】.Maven 3.8.1 报错 Blocked mirror for repositories 解决
【2】.pom.xml中引入repository无效
【3】.Maven pom.xml 设置 repository 不生效解决方案 如果 Maven 在中央仓库中也找不到依赖的文件,它会停止构建过程并输出错误信息到控制台。为避免这种情况,Maven 提供了远程仓库的概念。
【4】.Maven排除依赖exclusion用法
【5】.Maven 在项目的 pom.xml 文件中 指定 阿里云的景象仓库
5.程序包javax.servlet.http不存在
【尝试方案】
(1) 我尝试了在 javax.servlet 的依赖
1 | <!-- 解决编译时,报程序包javax.servlet不存在的错误 --> |
【解决方案】
最后的解决方案就是增加了这个 spring-boot-starter-web 依赖
1 | <dependency> |
【1】.IntelliJ IDEA 出现” java: 程序包javax.servlet不存在、 java: 程序包javax.servlet.annotation”等错误
【2】.Maven:编译时,报程序包javax.servlet不存在的错误(转载)
【3】.IDEA中显示找不到javax.servlet 这是我们少了servlet-api.jar这个jar包(在tomcat的lib目录里面找)
【4】.Springboot分模块项目错误之无法访问javax.servlet.http.HttpServlet 找不到javax.servlet.http.HttpServlet的类文件 springboot项目默认会添加spring-boot-starter和spring-boot-starter-test两个依赖,而web项目需要spring-boot-starter-web依赖。spring-boot-starter,没有web:
6.javax.annotation.jar
提示 java: 程序包javax.annotation不存在
【尝试方案】
(1)增加了 jsr250-api, 但是启动的时候就报错了:The following method did not exist:’java.lang.String javax.annotation.Resource.lookup()’
1 | <dependency> |
(2)将 javax.annotation.Resource 改为 jakarta.annotation.Resource
1 | // 修改前 |
【解决方案】
切换了 api 的版本
1 | <dependency> |
【1】.【Java-Bug】JDK没有javax.annotation.jar包解决方案,无法使用@Resource解决方案 JDK新特性,高版本JDK没有自带的javax(java扩展包)了。或者是使用的JDK不完整。
【2】.java: 程序包 javax.annotation 不可见,@Resource注解无法使用 【解决方法】 降低了 jdk 版本
【3】.[Spring]:java.lang.NoSuchMethodError: ‘java.lang.String javax.annotation.Resource.lookup()’