起因
换了个电脑打开了之前某个老项目IDEA启动springcloud其中某个服务直接报错,信息如下
java: JPS incremental annotation processing is disabled. Compilation results on partial recompilation may be inaccurate. Use build process “jps.track.ap.dependencies” VM flag to enable/disable incremental annotation processing environment.
表现情况就是一直在编译中,只能强制退出IDEA
解决方法
尝试了网上多个方法
-
lombok版本不兼容升级(吐槽:其他人都正常就我要升级,不合理吧。。。。)
-
打开“File” > “Settings”(对于macOS是“IntelliJ IDEA” > “Preferences”)。
导航到“Build, Execution, Deployment” > “Compiler”。
在“Shared build process VM options”中添加或修改VM选项:
-Djps.track.ap.dependencies=true (看着好像很有道理跟报错信息也对的上,但是没起效果) -
清理缓存 (没有效果)
最终解决方法
打开项目中的.idea文件夹,找到complier.xml文件
看到这个标签 annotationProcessing
错误示例
<annotationProcessing>
<profile default="true" name="Default" enabled="true" />
<profile name="Maven default annotation processors profile" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<module name="A-server-api" />
<module name="A-server" />
<module name="B-server-api" />
<module name="B-server" />
</profile>
<profile name="Annotation profile for zsacloud" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<option name="mapstruct.defaultComponentModel" value="spring" />
<processorPath useClasspath="false">
<entry name="$USER_HOME$/development/apache-maven-3.8.1/repository/org/mapstruct/mapstruct-processor/1.4.2.Final/mapstruct-processor-1.4.2.Final.jar" />
<entry name="$USER_HOME$/development/apache-maven-3.8.1/repository/org/mapstruct/mapstruct/1.4.2.Final/mapstruct-1.4.2.Final.jar" />
<entry name="$USER_HOME$/development/apache-maven-3.8.1/repository/org/projectlombok/lombok/1.18.6/lombok-1.18.6.jar" />
</processorPath>
<module name="A-server-api" />
</annotationProcessing>
正确示例
<annotationProcessing>
<profile default="true" name="Default" enabled="true" />
<profile name="Maven default annotation processors profile" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<module name="A-server-api" />
<module name="A-server" />
<module name="B-server-api" />
<module name="B-server" />
</profile>
<profile name="Annotation profile for server" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<option name="mapstruct.defaultComponentModel" value="spring" />
<processorPath useClasspath="false">
<entry name="$USER_HOME$/development/apache-maven-3.8.1/repository/org/mapstruct/mapstruct-processor/1.4.2.Final/mapstruct-processor-1.4.2.Final.jar" />
<entry name="$USER_HOME$/development/apache-maven-3.8.1/repository/org/mapstruct/mapstruct/1.4.2.Final/mapstruct-1.4.2.Final.jar" />
<entry name="$USER_HOME$/development/apache-maven-3.8.1/repository/org/projectlombok/lombok/1.18.6/lombok-1.18.6.jar" />
</processorPath>
<module name="A-server-api" />
<module name="A-server" />
<module name="B-server-api" />
<module name="B-server" />
</annotationProcessing>
就是有两个标签下面有模块,但是发现下面丢了很多就剩下一个,补上之后,所有服务就可以正常编译启动了。。。(不知道啥原因,反正项目可以愉快的跑起来了,可能是IDEA没自动生成)