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, 能正常编译运行了。

相关推荐
Kapaseker5 分钟前
领导问我 Kotlin 的 Nothing 是什么?
android·kotlin
特立独行的猫A36 分钟前
cj-tauri:用仓颉写桌面与鸿蒙 PC 应用
java·后端·python
Lonely丶墨轩41 分钟前
从一个 404 到负数 ID:第三方接口开发中的几次排错
java
聪明的笨猪猪1 小时前
实际工程问题:AI生成MyBatis批量操作的SQL超限与性能雪崩
java·经验分享·面试·ai编程
文丑颜不良啊1 小时前
LeetCode2501~2520题目解析
java·leetcode
瑞雪兆丰年兮1 小时前
JavaWeb-day07-MySQL(DQL&多表设计)
java·开发语言·数据库·sql·mysql·javaweb·web
唐老板1 小时前
Spring Boot 4 默认开虚拟线程,HikariCP 却成瓶颈
java
2601_9621066411 小时前
【Java Set综合实战】商品管理系统 + 图书收藏系统|Product、Book自定义类全套代码
java
RuoyiOffice12 小时前
SpringBoot+Vue3 凭证生命周期设计:审核、过账、冲销与反过账怎样保持账目一致
java·spring boot·事务·springboot3·财务系统·会计凭证·ruoyi office
2601_9621066412 小时前
HashMap入门|工号-姓名键值存储、两种遍历方式、根据key/value查
java