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

相关推荐
超级大只老咪38 分钟前
数组相邻元素比较的循环条件(Java竞赛考点)
java
小浣熊熊熊熊熊熊熊丶42 分钟前
《Effective Java》第25条:限制源文件为单个顶级类
java·开发语言·effective java
毕设源码-钟学长1 小时前
【开题答辩全过程】以 公交管理系统为例,包含答辩的问题和答案
java·eclipse
啃火龙果的兔子1 小时前
JDK 安装配置
java·开发语言
星哥说事1 小时前
应用程序监控:Java 与 Web 应用的实践
java·开发语言
派大鑫wink1 小时前
【JAVA学习日志】SpringBoot 参数配置:从基础到实战,解锁灵活配置新姿势
java·spring boot·后端
xUxIAOrUIII1 小时前
【Spring Boot】控制器Controller方法
java·spring boot·后端
Dolphin_Home1 小时前
从理论到实战:图结构在仓库关联业务中的落地(小白→中级,附完整代码)
java·spring boot·后端·spring cloud·database·广度优先·图搜索算法
醇氧2 小时前
org.jetbrains.annotations的@Nullable 学习
java·开发语言·学习·intellij-idea
Java&Develop2 小时前
Aes加密 GCM java
java·开发语言·python