解决Android中使用jdk 9以上中的某个类(AbstractProcessor)但是无法导入的问题

devtools/2024/10/18 12:27:42/

前景提要

今天在使用jdk中的AbstractProcessor类的时候,怎么都找不到,网上各种搜索,加什么依赖都没用,看了下依赖确实有这个类但是就是无法正常导入
在这里插入图片描述

然后翻了下android.jar,发现没有这个类
在这里插入图片描述

疑问

但是你尝试一下发现在jdk 7/8中部分可以正常导入,这个经过和同事朋友沟通后发现可能是谷歌的限制(谷歌改了javax)+在jdk9及后续版本中,jdk开始使用模块化规则。

JDK 1.8问题解决

在网上查阅很多资料发现jdk1.8直接导入rt.jar可以解决问题(ps:借一下网友的图,省的自己截图了)
在这里插入图片描述

JDK1.8 以上问题解决

但是你会发现问题又来了,你翻了翻你的jdk 11/17/19/21等等都没有jre这个路径当然也不会有rt.jar

如何获取jdk9及以上版本中依赖包,如’rt.jar’,’ dt.jar’等

在jdk9及后续版本中,jdk开始使用模块化规则,实现更好的封装和定义良好的接口,近一步加强了java的自由度,开发者可以定制化SDK包括rt.jar在内的依赖均已移除,以模块化形式更高效的存诸在 JAVA_HOME/jmods目录下,如果需要可以用命令进行抽取,例如需要用到javax.annotation.processing.AbstractProcessor类,则可以将jmods目录下的java.compiler进行重新打包
在这里插入图片描述

javacompilerjmod_18">解压jmods目录下的java.compiler.jmod模块到当前目录

任意目录下

jmod extract "D:\Program Files\Java\jdk-17\jmods\java.compiler.jmod"

使用jar工具在当前目录创建一个新的JAR文件

注意后面有个.

jar cf java.compiler.jar -C classes .

使用命令进行验证,将会成列出jar包中所有条目

jar tf .\java.compiler.jar

在Android studio如何引用依赖包?

将jar包复制到项目的lib目录下并右键选择Add As Library,将可以正常使用jar包中的类库模块的build.gradle文件中生成如下指令,

implementation files('libs\\java.compiler.jar')

虽然可以正常使用类库,但是在构建的时候会报错此时将指令更改为

compileOnly files('libs\\java.compiler.jar')

搞定结语

感谢https://www.cnblogs.com/bingbaihanji/p/17351815.html
最后提醒一下不要把java.compiler.jar发到自己的私库然后在线引用,我尝试过依然会导致无法导入,只有以jar包导入才行,如果你成功了可以留言告诉我


http://www.ppmy.cn/devtools/118141.html

相关文章

物联网系统中声音拾取音频方案_咪头

01 物联网系统中为什么要使用咪头 物联网系统中使用咪头(麦克风或传声器)的原因主要可以归结为以下几个方面: 声音信号的拾取与转换 基本功能:咪头是一种将声音转换为电信号的装置。在物联网系统中,咪头负责捕捉周围…

HarmonyOS第九章:鸿蒙axios(@ohos/axios)

🎉 博客主页:【剑九_六千里-CSDN博客】【剑九_六千里-掘金社区】 🎨 上一篇文章:【HarmonyOS第八章:HTTP数据请求】 🎠 系列专栏:【HarmonyOS系列】 💖 感谢大家点赞👍收…

408算法题leetcode--第16天

144. 二叉树的前序遍历 144. 二叉树的前序遍历思路:递归和非递归时间:O(n);空间:O(n) /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(…

C语言中定义指针,函数指针这种类似的变量(个人纪录)

C语言中定义各种变量 //1、定义一个指针 int *p; //定义一个数组 int nums[3] {1, 2, 3}; //2、定义一个指针数组 // 顾名思义 是一个数组,数组里面都是存的指针变量。 int *ptrArray[10]; // 这是一个指针数组,包含10个指向整数的指针 …

测试用例的举例

1. 基于测试公式设计测试用例 通过功能,性能,安全性,界面,安全性,易用,兼容对于一个水杯进行测试用例的设计; 对于一个软件的测试用例设计: 功能:软件本质上能够用来干什…

【unity进阶知识1】最详细的单例模式的设计和应用,继承和不继承MonoBehaviour的单例模式,及泛型单例基类的编写

文章目录 前言一、不使用单例二、普通单例模式1、单例模式介绍实现步骤:单例模式分为饿汉式和懒汉式两种。 2、不继承MonoBehaviour的单例模式2.1、基本实现2.2、防止外部实例化对象2.3、最终代码 3、继承MonoBehaviour的单例模式3.1、基本实现3.2、自动创建和挂载单…

废品回收小程序:回收更加便捷!

在日常生活中,废品回收已经成为了一种常见事,随着电商的快速发展,居民难免会产生大量的废纸盒等可回收物,以及在日常生活中产生的其他回收物, 目前,废品回收市场也发生了改革,传统的“叫卖”方…

【嵌入式开发】有关16head(16接口点击器)相关的资料

16接口点击头产品运用ESP8266 ESP8266是一款功能强大的低成本WiFi芯片,它支持多种网络协议,能够实现各种网络通信功能。 点击学习详细内容 之前讲解的点击器是用串口连接后,使用触控头来控制的方法 后续会在CSDN上讲解该板子用http请求控制…