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

news2024/9/9 8:10:24

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_17
        targetCompatibility 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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1963786.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux系统之DHCP服务配置

1、准备阶段 Windows(客户端)开启Vmnet8网卡Linux6(服务端)网络连接选择NAT模式,并配置IP地址为192.168.11.1/24Linux5(客户端)网络连接选择NAT模式将NAT的DHCP功能取消 2、DHCP服务器相关软件…

(vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束

(vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束 需求:按勾选的顺序给后端传值 难点:在 Element UI 的 el-cascader 组件中,默认的行为是根据数据的层级结构来显示选项,用户的选择也会基于这种层级结构,el-…

SQL必知必会

SQL必知必会 一些SQL知识,出自极客时间陈旸老师《SQL必知必会》 https://time.geekbang.org/column/intro/100029501 基础 视图 视图作为一张虚拟表,帮我们封装了底层与数据表的接口。它相当于是一张表或多张表的数据结果集。视图的这一特点&#x…

【C/C++】C语言到C++的入门知识点(主要适用于C语言精通到Qt的C++开发入门)

【C/C】C语言到C的入门知识点(主要适用于C语言精通到Qt的C开发入门) 文章目录 C语言与C的不同C中写C语言代码C语言到C的知识点Qt开发中需要了解的C基础知识namespace输入输出字符串类型class类构造函数和析构函数(解析函数)类的继…

20240801 每日AI必读资讯

🔊OpenAI向ChatGPT Plus用户推出高级语音模式 - 只给一小部分Plus用户推送,全部Plus用户要等到秋季 - 被选中的Alpha 测试的用户将收到一封包含说明的电子邮件,并在其移动应用中收到一条消息。 - 同时视频和屏幕共享功能继续推出&#xff…

【论文速读】| MoRSE:利用检索增强生成技术填补网络安全专业知识的空白

本次分享论文:MoRSE: Bridging the Gap in Cybersecurity Expertise with Retrieval Augmented Generation 基本信息 原文作者:Marco Simoni, Andrea Saracino, Vinod Puthuvath, Maurco Conti 作者单位:意大利比萨国家研究委员会信息学与…

2024 年最新 windows 操作系统搭建部署 nginx 服务器应用详细教程(更新中)

nginx 服务器概述 Nginx 是一款高性能的 HTTP 和 反向代理 服务器,同时是一个 IMAP / POP3 / SMTP 代理服务器。Nginx 凭借其高性能、稳定性、丰富的功能集、简单的配置和低资源消耗而闻名。 浏览 nginx 官网:https://nginx.org/ Nginx 应用场景 静态…

最新保姆级教程使用WildCard开通Claude3升级ChatGPT4.0(2024.8)

如何使用 WildCard 服务注册 Claude3 随着 Claude3 的震撼发布,最强 AI 模型的桂冠已不再由 GPT-4 独揽。Claude3 推出了三个备受瞩目的模型:Claude 3 Haiku、Claude 3 Sonnet 以及 Claude 3 Opus,每个模型都展现了卓越的性能与特色。其中&a…

【rockyLinux·9.4】安装 java jdk

一、安装 java 1.选择版本 yum list | grep jdk各个版本之间的区别: 2.选择了:java-17-openjdk-devel.x86_64(开发者版本),开始安装 建议安装在 /usr/local 这个目录下,可以创建一个 app 目录来收录它…

如何高情商处世:小李的职场智慧

如何高情商处世:小李的职场智慧 在职场这片大海中,我们都是游泳者,有的人轻松自如,而有的人却挣扎不已。今天,我要和大家分享一个关于如何用高情商处世的故事,它来自于我的侄子小李。 初出茅庐的小李 小…

SAP BW系统表分享第一弹

有时候想要查看BW系统中存在了多少的表时,包含SAP以及自建表,这个时候我们怎么去找呢? 不要慌,BW系统中也有其对应系统表来存储表对应的信息的,存储所有表信息的是DD02V或者DD02VV,我比较推荐使用DD02VV&a…

CSS实现图片边框酷炫效果

一、前言 我们在浏览一些网页时,经常会看到一些好看酷炫的元素边框效果(如下图),那么这些效果是怎么实现的呢?我们知道,一般的边框,要么是实线,要么是虚线(点状&#xf…

python随机选取数据算法

python随机选取数据算法: 使用sample方法 pandas的sample方法是最常用的方法来随机选取DataFrame中的数据。可以通过设置frac参数来指定选取的比例。 代码: import pandas as pd# 创建一个示例DataFrame data {A: range(1, 101),B: range(101, 201) }…

大厂linux面试题攻略四之Linux网络服务(一)

一、Linux网络服务-SSH服务 1.哪些设置能够提升SSH远程管理的安全等级? ssh的登录验证方式 ssh的登录端口和监听设置: 配置文件: /etc/ssh/sshd_config #Port 22 #ssh服务默认监听端口 #ListenAddress 0.0.0.0 #ssh服务…

配置静态IP,解决在虚拟机装Linux没有网络的问题

配置静态IP,解决在虚拟机装Linux没有网络的问题 问题 VMware中的虚拟机有时会随着外部宿主机的IP变化而变化,导致使用起来很麻烦。最直接的就是XShell连接不上,其次就是项目中的配置文件中写了关于虚拟机的ip地址,比如redis mys…

编程小白如何成为大神?大学新生的最佳入门攻略

📢博客主页:https://blog.csdn.net/2301_779549673 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 JohnKi 原创,首发于 CSDN🙉 📢未来很长&#…

【视频讲解】Python用LSTM、Wavenet神经网络、LightGBM预测股价

原文链接:https://tecdat.cn/?p37184 原文出处:拓端数据部落公众号 分析师:Yuyan Ye 在金融科技的浪潮中,量化投资方法以其数据驱动和模型导向的特性,日益成为资本市场分析的重要工具。 特别是,长短期…

2024最全的软件测试面试八股文【附答案+文档】

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 前言 最近有很多粉丝问我,有什么方法能够快速提升自己,通过阿里、腾讯、字节跳动、京东等互联网大厂的面试,我觉得短时间提升…

美容院会员管理系统|美业收银系统源码-已注册的客户,如何异店添加?

情景举例说明: 客户“张三”在A店已注册、消费,然后又到B店去消费。如何通过APP端和PAD端添加客户? ▶▶▶ • 在“客户管理”或“收银台”添加客户区域 • 搜索客户注册手机的完整手机号找到该客户 • 将其添加到本店即可

JavaScript 和 HTML5 Canvas实现图像绘制与处理

前言 JavaScript 和 HTML5 的 canvas 元素提供了强大的图形和图像处理功能,使得开发者能够在网页上创建动态和交互式的视觉体验。这里我们将探讨如何使用 canvas 和 JavaScript 来处理图像加载,并在其上进行图像绘制。我们将实现一个简单的示例&#xf…