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

相关推荐
EXI-小洲3 小时前
Java 操作 Word:字符串替换、图片插入、动态生成表格与API接口下载
java·开发语言·spring boot·word
2601_961901704 小时前
SpringBoot使用Nacos进行application.yml配置管理
java·spring boot·spring
何以解忧,唯有..5 小时前
LangChain 工具调用(Tool Calling)实战指南
java·前端·langchain
QQ_21696290965 小时前
【源码编号:project79475】SpringBoot校内二手交易平台:商品发布、分类检索、留言交流、订单管理全流程实战
java·spring boot·后端
前端 贾公子6 小时前
第09章:上下文与记忆 (2)
java·服务器·前端
2601_962203517 小时前
Java进阶07集合(续)
java·开发语言
郑州光合科技余经理7 小时前
本地生活服务系统:模块边界与结算字段怎么拆
java·开发语言·前端·后端·系统架构·uni-app·php
roman_日积跬步-终至千里7 小时前
【数据治理(6)】DataOps 不是调度工具,而是让数据产品长期可信的运行机制
java·服务器·网络
落魄大学生之流水线上谋生计7 小时前
LangGraph 基本用法指南
java·windows·python·langchain
2601_962128418 小时前
SpringBoot篇(缓存层)
java·spring boot·缓存