您现在的位置是:首页 >技术杂谈 >idea报错:java_ 程序包com.github.xiaoymin.knife4j.spring.annotations不存在网站首页技术杂谈
idea报错:java_ 程序包com.github.xiaoymin.knife4j.spring.annotations不存在
问题描述
在瑞吉外卖中添加swagger的相关配置,启动项目后报错:
分析与解决
java: 程序包com.github.xiaoymin.knife4j.spring.annotations不存在
,首先思路是查看本地仓库是否有对应的jar包
或者 是否导入了相关依赖
。
排查过程如下:
根据上图,发现本地仓库已有对应的jar包,而且我已正确导入依赖,那么问题出在哪?
经过一番搜索,类似的问题给我提供了思路:
- 选中jar包所在依赖包,右键选择 Open library settings
- 在弹出的对话框中,复制依赖包的名字
- 打开项目的iml文件(reggie_take_out.iml),添加如下配置:
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-spring-boot-autoconfigure:3.0.2" level="project" />
- 将其余报错按如上三步进行处理,在reggie_take_out.iml中添加配置:
<orderEntry type="library" name="Maven: io.springfox:springfox-core:3.0.0" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spi:3.0.0" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spring-web:3.0.0" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:3.0.0" level="project" />
一顿操作后,出现新的问题:
还是采用上面的思路进行排查,此次点击蓝色链接并没有跳转到导包语句,而是直接定位到具体的代码,所以直接在左侧查找org.springframework.plugin.core
依赖包,发现Plugin的类文件
是存在的,只不过编译器找不到而已。
解决方案依然是在reggie_take_out.iml中添加相关配置:
<orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-core:2.0.0.RELEASE" level="project" />
重启项目,启动成功。
拓展与总结
为了以后能快速解决类似问题,有必要了解一下iml文件。chatgpt给出如下回答:
在 IntelliJ IDEA 中,后缀为 iml 的文件是指 Module File,即模块文件。每个 IDEA 项目都由一个或多个模块组成,每个模块都有一个相应的 iml 文件。iml 文件包含有关模块的信息,例如模块的名称、源代码和资源文件的目录位置、依赖项、输出路径等。一个项目的 iml 文件可以在项目文件夹下找到。
iml 文件的作用是将模块与项目相关联,使得 IDEA 能够正确地加载和处理模块的所有信息和依赖项。iml 文件还可以保存一些模块特定的设置,例如代码风格、编译选项、测试配置等。由于 iml 文件是与模块相关联的,因此每个模块都必须有一个相应的 iml 文件,否则该模块将无法在 IDEA 中正确加载和处理。
出现此类问题的原因是idea
没有正确地加载依赖项。正常情况下,在pom.xml
文件中导入依赖后,maven
会自动下载依赖包到本地仓库,如果发现无法使用,可以在iml
文件中添加相关的依赖项。