当前位置: 首页 > news >正文

Android Java和Kotlin的目标JVM版本不一致

Android Java和Kotlin的目标JVM版本不一致

  • 报错信息
  • 报错说明
  • 错误出现场景
  • 当前环境
  • 解决方案
    • 一、升JDK版本
    • 二、降JDK版本
      • 查看项目所有的工具链
      • JAVA JDK下载方式
        • 一、官网
        • 二、Android Studio内下载
        • 三、[Toolchains for JVM projects (gradle.org)](https://docs.gradle.org/8.0/userguide/toolchains.html#sec:provisioning)

报错信息

Execution failed for task ‘:app:kaptGenerateStubsDebugKotlin’.

‘compileDebugJavaWithJavac’ task (current target is 1.8) and ‘kaptGenerateStubsDebugKotlin’ task (current target is 17) jvm target compatibility should be set to the same Java version.
Consider using JVM toolchain: https://kotl.in/gradle/jvm/toolchain

报错说明

这个错误消息表明在编译过程中,Java和Kotlin的目标JVM版本不一致。具体来说,Java代码的目标版本是1.8,而Kotlin代码的目标版本是17。为了确保一致性,需要将两个目标JVM版本设置为相同的Java版本。

错误出现场景

升级Gradle8.0,并且用到了Kapt出现

当前环境

Gradle 版本:8.0

APG 版本:8.1.2

kotlin 插件版本:1.8.10

解决方案

一、升JDK版本

build.gradle(:app)

plugins {id 'com.android.application'id 'org.jetbrains.kotlin.android'id 'kotlin-kapt'
}android {...compileOptions {sourceCompatibility JavaVersion.VERSION_17targetCompatibility JavaVersion.VERSION_17}kotlinOptions {jvmTarget = '17'}
}

将JAVA和KOTLIN的JDK版本指定到高版本解决

二、降JDK版本

考虑到兼容性问题,防止开发时使用到JAVA17新特性,运行到不支持JAVA17的手机上

build.gradle(:app)

plugins {id 'com.android.application'id 'org.jetbrains.kotlin.android'id 'kotlin-kapt'
}
android {...compileOptions {// 指定Java编译器使用的源代码版本,这里设置为Java 1.8。这意味着编译器将把代码视为Java 1.8版本的代码。sourceCompatibility JavaVersion.VERSION_1_8// 指定生成的字节码版本,这里设置为Java 1.8。这意味着编译器将生成可以在支持Java 1.8的JVM上运行的字节码。targetCompatibility JavaVersion.VERSION_1_8}kotlinOptions {// 指定Kotlin编译器生成的字节码版本,这里设置为1.8。这意味着Kotlin编译器将生成可以在支持Java 1.8的JVM上运行的字节码。jvmTarget = '1.8'}kotlin {// 配置Kotlin编译器使用的JDK版本,这里指定为8。这是指定Kotlin编译器使用JDK 8进行编译。jvmToolchain(8)}
}

在gradle.properties文件中添加以下属性

# java install path
org.gradle.java.installations.paths=E\:\\Android\\.gradle\\jdks\\corretto-1.8.0_422

E:\Android\.gradle\jdks\corretto-1.8.0_422 改成自己实际的低版本Java路径

详情可以查阅Toolchains for JVM projects (gradle.org),里面详细说明了Toolchain的配置。

查看项目所有的工具链

./gradlew -q javaToolchains

输出结果

  • Options
    | Auto-detection: Enabled
    | Auto-download: Enabled

  • Amazon Corretto JDK 1.8.0_422-b05
    | Location: E:\Android.gradle\jdks\corretto-1.8.0_422
    | Language Version: 8
    | Vendor: Amazon Corretto
    | Architecture: amd64
    | Is JDK: true
    | Detected by: system property ‘org.gradle.java.installations.paths’

  • JetBrains s.r.o. JDK 17.0.6+0-b2043.56-10027231
    | Location: E:\Android\Android Studio\jbr
    | Language Version: 17
    | Vendor: JetBrains s.r.o.
    | Architecture: amd64
    | Is JDK: true
    | Detected by: Current JVM

JAVA JDK下载方式

一、官网
  1. Java Downloads | Oracle
  2. Java | Oracle
二、Android Studio内下载

File -> Project Structure -> SDK Location -> Gradle Settings -> Gradle project -> Gradle JDK -> Download JDK

三、Toolchains for JVM projects (gradle.org)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 数据炼金术:在sklearn中进行增量特征合成的秘诀
  • 弱网常见问题
  • 25考研计算机组成原理复习·3.1/3.2 存储器概述/主存储器
  • Hugo 部署与自动更新(Git)
  • c#中Oracle.DataAccess.dll连接数据库的报错处理
  • TiDB系列之:TiCDC同步TiDB数据库数据到Kafka集群Topic
  • Vulnhub靶机-Jangow 1.0.1
  • javaScript中基本数据类型和复杂数据类型数据的存储
  • linux:二进制包安装与源码包安装详解
  • 【计组】第三章和第四章
  • 【考研数学】概率论:4 种方法解答一道题,你觉得哪种方法又快又好呢?
  • postman请求JSON格式,后台@RequestBody实体类接收不到数据
  • 30.x86游戏实战-遍历背包数组
  • Scrapy 爬取旅游景点相关数据(七):利用指纹实现“不重复爬取”
  • 怎么评价程序员40岁了竟然还在撸代码?
  • ----------
  • 【译】JS基础算法脚本:字符串结尾
  • 345-反转字符串中的元音字母
  • ES2017异步函数现已正式可用
  • es6--symbol
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • quasar-framework cnodejs社区
  • tensorflow学习笔记3——MNIST应用篇
  • vue-router的history模式发布配置
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 高性能JavaScript阅读简记(三)
  • 七牛云假注销小指南
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 如何合理的规划jvm性能调优
  • 入口文件开始,分析Vue源码实现
  • 听说你叫Java(二)–Servlet请求
  • 用mpvue开发微信小程序
  • 鱼骨图 - 如何绘制?
  • 找一份好的前端工作,起点很重要
  • Spring第一个helloWorld
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • ​渐进式Web应用PWA的未来
  • $ git push -u origin master 推送到远程库出错
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转) 深度模型优化性能 调参
  • (状压dp)uva 10817 Headmaster's Headache
  • *算法训练(leetcode)第四十五天 | 101. 孤岛的总面积、102. 沉没孤岛、103. 水流问题、104. 建造最大岛屿
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .NET 表达式计算:Expression Evaluator
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • /bin/rm: 参数列表过长"的解决办法
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • :class的用法及应用
  • @KafkaListener注解详解(一)| 常用参数详解
  • @SuppressWarnings(unchecked)代码的作用