JDK安装目录分析-两个jre和三个lib
安装JDK后,Java目录下有jdk和jre两个目录,但jdk下还有一个jre目录,而且这个jre比前面那个jre在bin目录下少了个server文件夹(Server端的Java虚拟机)!前一个jre俗称通用jre,后一个俗称内置jre。如下图所示:
两个jre大体相同,有细微的差别。
JDK里面有很多用Java所编写的开发工具(如javac.exe、jar.exe等),而且都放置在 \lib\tools.jar 里面,它们本身运行的时候必须自行附一套JRE才行;所以开发人员需要 java 开发环境,安装jdk时,内置jre在JDK安装过程中会自动安装。
通用JRE则是用来执行我们自己编写的JAVA程序;所以普通用户装通用jre即可。
注意:因为编译时,系统找的是jdk下的jre,而不是最外层的jre。这意味着外层jre不能用于调试,否则会报错,例如在eclipse中会提示Unknown Source
再说三个lib
JDK下的lib包括java开发环境的jar包,是给JDK用的,例如JDK下有一些工具,可能要用该目录中的文件。例如,编译器等。
JRE下的lib只是运行java程序的jar包,是为JVM运行时候用的。包括所有的标准类库,和扩展类。
JDK下的JRE下的lib是开发环境中,运行时需要的jar包。最典型的就是导入的外部驱动jar包。因为编译时,系统找的是jdk下的jre。而不是最外层的jre。
最后我在这里补充几点:
1. 在使用Eclipse的时候不需要指定的CLASSPATH,Eclipse会自己搜索.
2. 独立目录下的jre是通用jre,安装时是可选的(选择了,则会覆盖已有版本)。jdk目录下的jre则是必须的。如果你在eclipse里指定jdk的路径(jre的路径不用你指定,会自己去找的,用的就是这个内置jre。而java, web, start等,用的则是通用jre。
更详细深入分析请参考文章:http://blog.sina.com.cn/s/blog_9ba71d0b01014bux.html
JDK安装目录分析-两个jre和三个lib的更多相关文章
- 史上!最最最简洁明了的 Java JDK 安装目录及其子目录含义 10分钟详解 - 精简归纳
Java JDK 安装目录及其子目录含义 10分钟详解 - 精简归纳 JERRY_Z. ~ 2020 / 8 / 30 转载请注明出处!️ 目录 Java JDK 安装目录及其子目录含义 10分钟详解 ...
- 深入浅出 Java JDK 安装目录及其子目录含义 10分钟详解 - 精简归纳
Java JDK 安装目录及其子目录含义 10分钟详解 - 精简归纳 JERRY_Z. ~ 2020 / 8 / 30 转载请注明出处!️ 目录 Java JDK 安装目录及其子目录含义 10分钟详解 ...
- Linux中查看jdk安装目录、Linux卸载jdk、rpm命令、rm命令参数
一.查看jdk安装目录 [root@node001 ~]# whereis java java: /usr/bin/java /usr/local/java #java执行路径 [root@node0 ...
- JDK安装目录下的src
学Java这么久,JDK目录下的包有哪些都不知道,今天偶然解压到src明白了许多道理 1.进入JDK安装目录,我的安装路径为:E:\JDK\jdk1.8.0,可以看到这里有个src压缩文件 2.直接解 ...
- JDK 安装目录中 native2ascii.exe 命令详解
native2ascii 简介 native2ascii 是 sun java sdk提供的一个工具.用来将别的文本类文件(比如*.txt,*.ini,*.properties,*.java等等)编码 ...
- Centos7安装jdk1.8并查找jdk安装目录
安装之前先检查一下系统有没有自带open-jdk rpm -qa |grep java rpm -qa |grep jdk rpm -qa |grep gcj 如果没有输入信息表示没有安装. 如果安装 ...
- Maven安装目录分析
maven目录结构介绍 bin: 包含了mvn运行的脚本(既在cmd输入命令执行依赖,在命令行输入任何一条mvn命令时,实际上就是在调用这些脚本) boot: 该目录只包含一个文件,是一个类加载器,m ...
- [Maven实战-许晓斌]-[第二章]-2.3安装目录分析
bin boot conf settings.xml非常重要 这个是maven安装包自带的settings.xml 通常我们会放在习惯路径,C:\Users\admin\.m2\下面 即 用户路径\ ...
- JDK源码分析之concurrent包(三) -- Future方式的实现
上一篇我们基于JDK的源码对线程池ThreadPoolExecutor的实现做了分析,本篇来对Executor框架中另一种典型用法Future方式做源码解读.我们知道Future方式实现了带有返回值的 ...
随机推荐
- MVC地址输出变为小写
其实个人不知道有什么区别,看到大多数都是小写,还是小写吧 去nuget安装一个第三方,然后对路由简单修改一下 插件名称:LowercaseRoutesMVC 方法名:MapRouteLowercase ...
- js 阻止事件捕获
1.支持W3C标准的浏览器在添加事件时用addEventListener(event,fn,useCapture)方法,基中第3个参数 useCapture是一个Boolean值,用来设置事件是在事件 ...
- python:find()函数,字符串查询
#find函数 # b中有a的元素则打印a对应的元素坐标(索引),否则打印-1 a = "abcd" b = "d" print(a.find(b))
- iOS学习之UIPickerView控件的简单使用
UIPickerView控件在给用户选择某些特定的数据时经常使用到,这里演示一个简单的选择数据,显示在UITextField输入框里,把UIPickerView作为输入View,用Toolbar作为选 ...
- 认识Echarts(网址:http://echarts.baidu.com/tutorial.html#ECharts%20%E7%89%B9%E6%80%A7%E4%BB%8B%E7%BB%8D)
first.html: <!DOCTYPE html><html lang="en"><head> <meta charset=" ...
- spring 采用编程式事务
1.getCurrentSession()与openSession()的区别? * 采用getCurrentSession()创建的session会绑定到当前线程中,而采用openSession() ...
- 2-字符串模拟- URL映射
问题描述 试题编号: 201803-3 试题名称: URL映射 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 URL 映射是诸如 Django.Ruby on Rails 等 ...
- freemaker 课程
品优购电商系统开发 第12章 网页静态化解决方案-Freemarker 传智播客.黑马程序员 1.网页静态化技术Freemarker 1.1为什么要使用网页静态化技术 网页静态化解决方案在实际开发中运 ...
- Solidity智能合约调用智能合约
来源:https://medium.com/@blockchain101/calling-the-function-of-another-contract-in-solidity-f9edfa921f ...
- ubuntu14.04安装chromium以及flash插件
之前找了好几个方法都不还用,今天突然发现,还挺简单的.命令如下: sudo apt-get updatesudo apt-get install chromium-browser#sudo add-a ...