Kotlin: [Internal Error] java.lang.NoSuchFieldError: FILE_HASHING_STRATEGY

1. 问题描述

编译maven应用,报错:Kotlin: Internal Error java.lang.NoSuchFieldError: FILE_HASHING_STRATEGY

java 复制代码
Kotlin: [Internal Error] 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)

看了下,java应用里有部分代码是 Kotlin 写的。根据报错判断,应是 Kotlin 版本过低所致。

2. 解决方案

参考 stackoverflow 的这个解决方案 ,配置 Kotlin Compiler version 等参数:

3. 新问题及解法

按照上述配置完 Kotlin Compiler version 等参数后,再次编译运行,又报错如下:

java 复制代码
Kotlin: Unknown -Xjvm-default mode: enable, supported modes: [disable, all-compatibility, all] 

查了下,这个错误是因为使用的 -Xjvm-default=enable 参数在较新版本的 Kotlin 编译器中已经被废弃或移除了。Kotlin 编译器现在只支持以下几种模式:

  • disable(默认)
  • all
  • all-compatibility

再设置下参数 -Xjvm-default=all, 能正常编译运行了。

相关推荐
学计算机的计算基8 分钟前
操作系统内存管理全解:虚拟内存、页表、COW、malloc、OOM一篇搞定
java·笔记·算法
tachibana213 分钟前
hot100 前 K 个高频元素(347)
java·数据结构·算法·leetcode
万亿少女的梦16832 分钟前
基于Spring Boot、Java与MySQL的网络订餐系统设计与实现
java·spring boot·mysql·系统设计·网络订餐
咩咩啃树皮9 小时前
第40篇:Vue3组件化开发精讲——组件拆分、复用、父子通信、工程化架构
java·前端·架构
鱟鲥鳚9 小时前
Spring Boot 集成 LangChain4j:从模型调用到 Tool Calling(Demo版)
java·spring boot
大模型码小白11 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
腾渊信息科技公司12 小时前
Spring Boot对接MES实战:视觉检测数据自动同步方案
java·人工智能·spring boot·后端·计算机视觉·ai·软件需求
爱笑的源码基地13 小时前
高并发 Redis 缓存门诊HIS系统源码,含财务统计药房进销存
java·程序·门诊系统·诊所系统·云诊所源码
wuqingshun31415913 小时前
TCP超时重传机制是为了解决什么问题?
java
莫逸风15 小时前
【AgentScope 2.0】 0. 学习指南
java·llm·agent·agentscope