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

【重学Android】02.Java环境配置的一些分享

背景说明

其实只是学习Android的话,只要下载好Android Studio开发工具,是自带JDK环境的,所以不需要再额外去进行配置,我之所以还要进行单独配置,是因为我其他的工具需要Java的环境,而且我目前用的是JDK 12,因此还是要配置下。

然后就去看了下配置Classpath的路径,发现一搜基本全是差不多的教程,都是配置这样的路径【.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;】

本来配置好了也就可以了,但是我又多了个心眼,我去这个目录下看了下是不是有这两个文件,结果发现没有,然后我就不淡定了。

因为搜到的教程都是这么配置的,但是现在我发现JDK 12下没有这个文件,是不是我装错了?

最后一翻查找后发现,在安装JDK 12版本后,lib目录下缺少dt.jartools.jar文件,这是JDK 12版之后的正常现象,无需担忧。

具体原因如下:

原因解析

  1. JDK模块化改革
    从JDK 9开始,Oracle对Java进行了模块化改造,移除了传统的rt.jartools.jardt.jar等文件,改为更高效的模块化存储方式(位于jmods目录)。这也是为什么JDK 12及更高版本中不再包含这些文件的根本原因。

  2. JRE生成方式变更
    JDK 12默认不包含独立的JRE文件夹,需通过命令行手动生成,而dt.jartools.jar的功能已被整合到模块化系统中,不再需要单独配置。

解决办法

1. 环境变量配置调整
  • 无需配置CLASSPATH
    从JDK 9开始,无需在CLASSPATH中添加dt.jartools.jar,直接省略相关配置即可。
    推荐的环境变量设置如下:

    JAVA_HOME = C:\Program Files\Java\jdk-12.0.1
    Path = %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
    
  • 生成JRE(可选)
    若需JRE,可在JDK安装目录下执行命令手动生成:

    bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre
    

    注意需以管理员权限运行命令行。

2. 验证安装
  • 打开命令提示符,输入以下命令验证:
    java -version   # 查看Java版本
    javac -version  # 查看编译器版本
    
    若返回版本信息(如12.0.1),则配置成功。
3. 避免安装路径覆盖

若使用旧版本JDK(如JDK 8),需确保安装时JDK和JRE路径不同,否则会导致文件覆盖。但此问题不适用于JDK 12及以上版本。

总结

介于此也发现一个问题,很多以前的教程由于很多原因,在如今搜索引擎下,还是会作为优先推荐展示出来,从而导致我们有时候参照了早已过时的环境配置。

最后,JDK 12的dt.jartools.jar缺失是版本升级后的正常现象,无需重新安装或修复。只需按新规范配置环境变量,并利用模块化特性即可。若需兼容旧项目,可考虑降级至JDK 8并注意安装路径分离。

http://www.xdnf.cn/news/32671.html

相关文章:

  • 高精度算法(加、减、乘、除、阶乘和)​
  • QML Rectangle 组件
  • 直线轴承常规分类知多少?
  • 洛谷P1177【模板】排序:十种排序算法全解(1)
  • Keil A51汇编伪指令
  • 【机器学习】朴素贝叶斯算法:原理剖析与实战应用
  • Java学习手册:Web 应用架构概述
  • 卷积神经网络(CNN)详解
  • 【嵌入式】——Linux系统远程操作和程序编译
  • 前端面试真题集合(一)
  • Python语法系列博客 · 第9期[特殊字符] 函数参数进阶:*args、**kwargs 与参数解包技巧
  • 树莓派5-开发应用笔记
  • Java Web 之 Tomcat 100问
  • git合并分支并推送
  • 为什么浮点数会搞出Infinity和NAN两种类型?浮点数的底层原理?IEEE 754标准揭秘?
  • matlab 环形单层柱状图
  • 解锁异步JavaScript性能:从事件循环(Event Loop)到Promise与Async/Await的最佳实践
  • 电商平台计算订单成交额是不是要去除退款退货的
  • CMFA在自动驾驶中的应用案例
  • 多线程使用——线程安全、线程同步
  • 【Canvas与旗帜】标准英国米字旗
  • 实现批量图片文字识别(python+flask+EasyOCR)
  • 系统架构设计师:计算机组成与体系结构(如CPU、存储系统、I/O系统)案例分析与简答题、详细解析与评分要点
  • 【C++动态规划】2801. 统计范围内的步进数字数目|2367
  • 洛谷P1177【模板】排序:十种排序算法全解(2)
  • Docker安装与介绍(一)
  • 【工具变量】A股上市公司信息披露质量KV指数测算数据集(含do代码 1991-2024年)
  • 青少年编程与数学 02-016 Python数据结构与算法 29课题、自然语言处理算法
  • 黑马Java基础笔记-1
  • 计算机网络——常见的网络攻击手段