IntelliJ开发时无法访问JSON文件生成的Java类如何解决
问题场景
旧项目开发中存在一类IntelliJ IDEA无法识别自动生成类的问题:项目部分Java类基于项目内存储的JSON Schema文件自动构建生成,执行mvn clean install命令后,可以在target文件夹下找到生成完成的POJO类,但常规开发过程中无法在业务代码里直接引用、访问这些类。
相关效果参考:

解决步骤
- 临时快速解决:手动标记生成目录为源码根
定位到target目录下存放自动生成类的子文件夹(通常在target/generated-sources/路径下,对应生成插件的专属输出目录),右键点击该文件夹,依次选择Mark Directory as>Generated Sources Root。标记完成后IDEA会自动索引目录下的所有类,代码里就能正常引用了。 - 永久生效配置:绑定Maven插件生成路径
打开项目根目录下的pom.xml文件,找到负责JSON Schema转Java类的对应插件(最常用的是jsonschema2pojo插件),在配置中明确指定生成文件的输出目录,并将生成目标绑定到Maven的构建生命周期,参考配置如下:
配置保存后执行一次<plugin> <groupId>org.jsonschema2pojo</groupId> <artifactId>jsonschema2pojo-maven-plugin</artifactId> <version>替换为项目实际使用的插件版本</version> <configuration> <sourceDirectory>${project.basedir}/src/main/resources/schema</sourceDirectory> <targetPackage>替换为生成类的实际包路径</targetPackage> <outputDirectory>${project.build.directory}/generated-sources/jsonschema2pojo</outputDirectory> </configuration> <executions> <execution> <goals> <goal>generate</goal> </goals> <phase>generate-sources</phase> </execution> </executions> </plugin>mvn clean compile,IDEA会自动识别插件声明的生成源码目录,后续拉取代码、切换分支都不需要重复手动标记。 - 异常兜底方案:清理IDEA缓存重建索引
如果完成前两步操作后类依然无法被识别,点击IDEA顶部菜单栏File>Invalidate Caches...,在弹窗中勾选Clear file system cache and Local History,点击Invalidate and Restart等待重启完成全量索引即可。
注意:
target目录下的所有文件都会在Maven构建时被清空重写,不要直接修改该目录下自动生成的类,需要调整类结构时直接修改对应的JSON Schema文件即可。
内容的提问来源于stack exchange,提问作者Aditya Rewari
相关产品推荐
相关产品推荐

