升级IntelliJ IDEA到2024.1.3后编译Maven项目触发Kotlin内部错误
IntelliJ IDEA升级至2024.1.3后Maven项目编译报Kotlin内部错误解决办法
将IntelliJ IDEA从2023.1.1升级到2024.1.3后,编译Maven项目时出现如下错误:
Kotlin: [Internal Error] java.lang.NoSuchFieldError: FILE_HASHING_STRATEGY
完整堆栈跟踪信息(中文翻译):
Kotlin: [内部错误] java.lang.NoSuchFieldError: FILE_HASHING_STRATEGY at org.jetbrains.kotlin.jps.targets.KotlinJvmModuleBuildTarget.updateChunkMappings(KotlinJvmModuleBuildTarget.kt:362) at org.jetbrains.kotlin.jps.build.KotlinBuilder.doBuild(KotlinBuilder.kt:463) at org.jetbrains.kotlin.jps.build.KotlinBuilder.build(KotlinBuilder.kt:299) at org.jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:1609) at org.jetbrains.jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:1238) at org.jetbrains.jps.incremental.IncProjectBuilder.buildTargetsChunk(IncProjectBuilder.java:1389) at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:1203) at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunks(IncProjectBuilder.java:971) at org.jetbrains.jps.incremental.IncProjectBuilder.runBuild(IncProjectBuilder.java:527) at org.jetbrains.jps.incremental.IncProjectBuilder.build(IncProjectBuilder.java:236) at org.jetbrains.jps.cmdline.BuildRunner.runBuild(BuildRunner.java:135) at org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:387) at org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:212) at org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler.lambda$channelRead0$0(BuildMain.java:211) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:833)
错误原因
该问题源于IDE升级后,内置Kotlin版本与项目依赖的Kotlin插件、库版本不兼容。FILE_HASHING_STRATEGY字段在新版Kotlin JPS构建工具中已被移除或重命名,但项目依赖的旧版Kotlin代码仍在引用该字段,导致抛出找不到字段的错误。
解决步骤
- 同步项目Kotlin版本与IDE内置版本:
- 通过
File > Settings > Languages & Frameworks > Kotlin查看IDE内置的Kotlin版本号。 - 在项目pom.xml中更新所有Kotlin相关依赖和插件的版本,与IDE版本保持一致:
<properties> <kotlin.version>1.9.23</kotlin.version> <!-- 替换为IDE内置的实际版本号 --> </properties> <dependencies> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-stdlib-jdk8</artifactId> <version>${kotlin.version}</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-maven-plugin</artifactId> <version>${kotlin.version}</version> <executions> <execution> <id>compile</id> <phase>compile</phase> <goals> <goal>compile</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
- 通过
- 清理并重新构建项目:执行Maven命令
mvn clean install,同时在IDE中点击Build > Clean Project,随后重新编译项目。 - 更新Kotlin插件:打开
File > Settings > Plugins,搜索Kotlin插件,确保其为最新版本且与IDE版本匹配,更新后重启IDE。 - 清除IDE缓存:通过
File > Invalidate Caches...选择Invalidate and Restart,清除旧缓存文件以避免版本冲突。 - 检查自定义JPS配置:若项目中存在自定义JPS构建配置,移除所有与
FILE_HASHING_STRATEGY相关的配置项,确保配置适配新版Kotlin。
内容的提问来源于stack exchange,提问作者Jonathan Lalou
相关产品推荐
相关产品推荐

