疑似问题
:安装新版本的JDK,发现lib目录下面找不到rt.jar 、tools.jar和dt.jar文件了。
开始以为下载的安装版本不对,卸载了重新安装,还是这样。又下载了几个其它版本JDK版本安装,还是这样。又怀疑自己安装过程有问题,但安装过程很简单,也没有可以选择的地方。到命令行下执行java -version也是正常的。
最后还是从jdk的官方文档中得到了答案:从jdk9版本开始,删除了rt.jar 、tools.jar和dt.jar文件
https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-A78CC891-701D-4549-AA4E-B8DD90228B4B
由于
jdk
版本是
11
,在配置flutter环境的时候遇到Android license status unknown问题,需要以下这几个
jar
包。
activation.
jar
istack-commons-runtime.
jar
jaxb-api.
jar
jaxb-core.
jar
jaxb-impl.
jar
jaxb-jxc.
jar
jaxb-xjc.
jar
(摘:版本更新到9.0后的变化)
JDK
9的核心变化就是引入了一种新的
Java
编程组件,也就是模块,按照Oracle的说法,它是一个可命名的、自描述的代码和数据集合。模块技术的核心目标是减少
Java
应用和
Java
核..
本文首先介绍了两类
Jar
包冲突问题:第一类是同一个
Jar
包出现了多个不一样版本,第二类是同一个类出现在多个不同的
Jar
包中。
然后介绍了第一类
Jar
包冲突问题的原因是是因为Maven仲裁机制并不能只能的判断应用真正需要的
Jar
包版本,第二类
Jar
包冲突问题的原因是受到
Jar
包的类加载器的加载顺序和操作系统的
文件
加载顺序的影响。
最后提出了问题排除和解决的方案,以及如何有效避免
Jar
包冲突问题的发生。
JDK
9之后如何引入被
删除
的类
最近在和其他系统对接时,引入了一些
jar
包,
jar
包中使用的是
JDK
8,我们使用的是
JDK
11
,不幸的是
jar
包中所依赖的sun.misc.Cache在
JDK
11
中已经被移除掉了,因为作为一个单独的服务,最初的时候我们是通过降低
JDK
的版本进行使用,后来需要集成到总模块中,因此不得不另求他法。所幸在网上找到了类似的文章,原文地址:https://www.coder.work/a
rt
icle/855699。
简单来说,就是找到被
删除
的类所属包的所在的模块(J
原因是
jdk
1.7之后
rt
.
jar
不在
jdk
/
lib
下,而在jre/
lib
下
网上的几种解决方法虽然可行,但个人觉得思路不够清晰,于是自己研究了一下,可以不用修改pom.xml
通过查看MAVEN_HOME/bin/mvn.sh,发现在未设置
JAVA
_HOME的情况下,maven使用的是whereis
java
找到的jre,其
lib
下并
没有
rt
.
jar
于是在项目根路径中创建mvn.sh, 设置临时的
JAVA
_HOME,指向自己的jre路径,内容如下
#!/bin/bash
expo
rt
JAVA
_H
90后(
JDK
9)没听说过
rt
.
jar
很正常,但是作为80后(
JDK
8),是经历过7080年代(
JDK
7和8)的人,都没听说过
rt
.
jar
,我很惭愧,所以我想乘着
JDK
8盛行之时好好撸一撸它,我可不想印证了李商隐的一句话:此情可待成追忆,只是当时已惘然。
我要搞清楚的问题:
什么是
rt
.
jar
?为什么要撸它。
为什么90后不知道
rt
.
jar
很正常?什么是JPMS?
为什么
JDK
8能流行这么久?
JDK
17都出来了我们依然觉得它最香。
一、什么是
rt
.
jar
?为什么要撸它。
rt
.
jar
的存在由来已久
官方英文原版: https://docs.oracle.com/en/
java
/
java
se/
11
/migrate/index.html#JSMIG-GUID-C25E2B1D-6C24-4403-8540-CFEA875B994A
Java
平台,标准版
Oracle
JDK
迁移指南
第
11
版
E948...
windows
jdk
17安装
一、下载地址:
https://www.oracle.com/
java
/technologies/downloads/#
jdk
17-windows
根据自己的需要下载合适的版本,我这里下载的是Windows
jdk
17
双击安装包,出现如下界面,点击“下一步”继续安装。
选择我们安装的
目录
,然后点击“下一步”,友情提示:尽量不要安装到系统盘(C盘),电脑通电启动时会扫描系统盘(.