当前位置: 首页 > news >正文

教育培训机构网站模板seo是什么职位简称

教育培训机构网站模板,seo是什么职位简称,怎样在本地测试多个织梦网站,摄影师签约有哪些网站目录 概述|背景 报错解析 解决方法 IDEA配置解决 Pom配置插件解决 概述|背景 报错发生背景:在SpringBoot项目中引入Lombok依赖并使用后出现"找不到符号"的问题。 本文讨论在上述背景下发生的报错原因和解决办法,如果仅为了解决BUG不论原…

目录

概述|背景

报错解析

解决方法

IDEA配置解决

Pom配置插件解决


概述|背景

报错发生背景:在SpringBoot项目中引入Lombok依赖并使用后出现"找不到符号"的问题。

本文讨论在上述背景下发生的报错原因和解决办法,如果仅为了解决BUG不论原因直接通过目录跳到【解决方法】,如果发生背景不同请找其他博文寻求解决。

Lombok"找不到符号"代码报错一般位置:

1.代码: log.info("日志内容..");   (使用了注解@Slf4j)

2.代码:class.getX(); (使用了注解@Data

报错解析

1.为什么会出现“找不到符号”的报错呢?

我们遇到这个报错时一般都会想到:“难道是这个变量没有定义?”,但是转念一想我们所引用的是Lombok给我们提供的变量。

所以,我们应该去探索Lombok内部,我们在使用log(log.info("日志内容.."))变量时,到底发生了什么。

实际上,当我们编写了代码:log.info("日志内容.."),在项目编译时遇到log变量,会发生的事情是自动帮我们补充了代码:private static final Logger log = LoggerFactory.getLogger(...); 向我们提供了log这个变量引用。

所以,如果这段“自动生成的代码”没有自动生成的话,那么log变量自然就找不到,报错"找不到符号"那也就合理解释了。

当然,代码:class.getX(); 原理也是一样的,只不过自动生成的代码不同罢了(这段代码自动生成的是getter函数)。

-.- | `.`

2.自动生成代码的时机?

当我们明白了会报“找不到符号”的原因就是该自动生成的代码没有生成后,我们就该研究一下“使用lombok时何时帮我们自动生成代码”。

我们在使用Lombok时一般都会在所在类上添加"lombok相关注解"。

例如:想使用日志log.info(),我们就该声明注解"@Slf4j",当想要自动给类中所有字段添加Getter和Setter函数时就该声明"@Data"对吧。

实际上这些注解就会成为自动生成代码位置的锚点。

当项目代码编译时遇到这些注解,“lombok注解处理器”就会识别并生成相应代码。

+.+ | *。*

 3.注解处理器-最终解释 

最终我们会把问题聚焦在"注解处理器是否正确加载"的问题上来。

因为如果lombok注解处理器没有正确加载,那么当代码编译时遇到"lombok变量"自然就没有办法识别。

所以,我们下面我们的解决方案就是“让注解处理器正确工作”。

解决方法

IDEA配置解决

添加VM选项-D jps.track.ap.dependencies=false

这是目前网络上热门的解决方法,但这是一种“回避型”的解决方案,在低版本的SpringBoot项目中有效,但是在高版本3.x中却不一定有效。

 方法解释:

1. 首先我们应该知道一件事:IDEA(IntelliJ IDEA)自带了Lombok插件,正常情况下我们在IDEA中编写"lombok代码"是能够正常运行(能正常“自动生成代码”)的。

 2. 当我们在项目Pom中引入了Lombok依赖之后,Lombok 注解处理器会在编译时被 Maven 加载并执行,生成 Lombok 注解(如 @Slf4j, @Getter, @Setter)所需要的代码但是引入后IDEA自带的Lombok插件优先级低于Lombok依赖提供的注解处理器。

3. 所以当引入Lombok依赖后,Maven代码编译时会优先寻找Lombok依赖提供的注解处理器(追踪依赖),如果没有,直接报错“找不到符号”,而不是去使用IDEA自带的插件去生成代码。

4.上面这个参数通过禁用 IDEA 的依赖追踪机制,让编译过程 忽略 Maven 构建时依赖检查失败的情况。这相当于告诉 IDEA:“不要强制检查这些注解处理器的依赖,不要因为 Maven 的编译失败而阻止代码编译。”

5. 这样一来,即使 Maven 没有找到注解处理器,IDEA 插件仍然可以继续使用,并且 Lombok 的相关代码仍然可以通过 IDE 插件自动生成,从而避免报错。

总结:添加VM选项参数jps.track.ap.dependencies=false实际上并没有解决根本问题,只是有忽略了问题导致的编译终止,让编译继续,使得IDEA的lombok插件可以兜底解决。

(并非所有IDE都默认支持lombok,所以这种解决方案理论上并不是最好的)

Pom配置插件解决

 合理的解决方案应该是我们到Pom文件中配置Lombok的注解处理器

<!-- pom.xml -->
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><annotationProcessorPaths><path><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>版本号需要和boot版本匹配</version></path></annotationProcessorPaths></configuration>
</plugin>

配置好记得"clean"一下,然后重新maven编译,运行。 

正确配置后,当Maven编译时就能正确加载到Lombok注解处理器,使得"lombok代码"能正常生成,避免报错发生。 

值得注意的是:在配置如上插件的时候lombok版本最好填一下<version>版本号</version>

如果不显示填的话,大概率会从maven远程仓库调用下载最新版或稳定版的Lombok,自动下载的版本不一定和你SpringBoot项目版本兼容,依然会报错

所以,请到spring-boot-dependencies.pom中查看boot项目版本对应的Lombok版本

文件查找路径/方法:

最后总结:

1. 问题的核心就在于Lombok注解处理器没有被正确加载或配置,导致Maven在编译过程中报错,无法生成相应的代码。

~.~ | ``

2. 尽管使用VM选项参数 -Djps.track.ap.dependencies=false 可以避免报错,但最好是确保Maven的Lombok注解处理器配置正确,以确保Maven构建过程和IDEA插件共同协作,使得项目在任何构建环境下都能正确生成代码。

完。

http://www.yidumall.com/news/73576.html

相关文章:

  • h5响应式网站建设报价定向推广
  • dede网站 地图什么做广告优化师适合女生吗
  • 如何做专业的模板下载网站sem推广优化
  • 做购物网站 营业范围是什么上海百度seo公司
  • 本地怎样做网站站内推广有哪些具体方式
  • 音乐网站开发代码合肥seo推广外包
  • 四川冠辰网站建设友情链接的形式有哪些
  • 做网站维护需要会什么今天国际新闻大事
  • 那个网站的域名便宜网店推广方案
  • 建网站主机疫情防控最新通告
  • 成都专业网站建设哪家好seo zac
  • 阳逻开发区网站建设中企动力搭建网站平台需要多少钱
  • wordpress安装用户名seo描述是什么
  • 瑞安企业做网站百度风云榜明星
  • 企业手机网站案例官网设计比较好看的网站
  • 做网站制作的公司网络营销计划的七个步骤
  • 陕西网站建设方案优化肇庆百度快速排名
  • 国际网站开发客户的技巧南宁网站seo大概多少钱
  • wordpress f_bq企业seo职位
  • 超值的镇江网站建设抖音十大搜索关键词
  • 网站设置怎么调广州品牌营销服务
  • 做网站四百全包重庆seo1
  • 广东网站营销seo费用企业高管培训课程有哪些
  • 中英文切换网站网络营销战略有什么用
  • 四站合一网站建设公司青岛百度seo
  • wordpress网站嵌入商城什么是seo?
  • 网站建设交易中心网站优化排名服务
  • 四川网站建设套餐活动营销
  • 北京手机网站建设外包百度手机助手下载
  • 上海网站制作库榆打广告