Windows系统环境变量、JAVA环境变量配置以及JVM加载过程
一:用户变量和系统变量的区别
右击我的电脑、属性、高级系统设置、环境变量。
对话框的上面为Administrator的用户变量,对话框的下面为系统变量。我们所说的环境变量一般指系统环境变量,对所有用户起作用 ,而用户环境变量只对当前用户起作用。
有的时候我们会看到在用户变量和系统变量中都存在某一个环境变量,比如path(可运行文件的搜索路径), path变量的值是用户变量中的值与系统变量中的值的叠加。(即用户变量path的值其实是 用户变量设置中的path值 和 系统变量中的值都有)。
例如:
用户变量中的Path:
C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\Scripts\;C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\;G:\Android\sdk\platform-tools;G:\altera\13.1\modelsim_ase\win32aloem
系统变量中的Path:
C:\ProgramData\Oracle\Java\javapath;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\ProgramFiles\ATITechnologies\ATI.ACE\Core-Static;G:\matlab\runtime\win32;G:\matlab\bin;C:\ProgramFiles\Java\jdk1.8.0_91\bin;%QUARTUS_ROOTDIR%\bin;G:\git\Git\cmd;D:\MySQL\bin;
在命令窗口中,这些可执行文件都可以直接运行,而不用去某个具体的文件夹下运行。
这个问题在linux下面就相对好理解一些,系统变量都在/etc/profile文件里面,而用户的变量则在~/.bash_profile(如果用的是bash的话),每个用户的用户目录对其他用户不可见。假设有a,b,c三个用户,你在a的变量文件中写入语句在屏幕上述出a,在b的输出b,c的什么都不输出,系统文件输出sys,那么当你用a用户登陆时,输出a;用户b登陆输出b,用户c则输出sys.
参考:http://www.cnblogs.com/zhwl/p/3338294.html
Windows系统变量汇总:http://blog.163.com/cayyenne%40126/blog/static/121862614201019082750/
二:Java环境变量配置
Windows下JAVA用到的环境变量主要有3个,JAVA_HOME、CLASSPATH、PATH。下面逐个分析。
(1)JAVA_HOME指向的是JDK的安装路径。设置方法:JAVA_HOME= C:/Program Files/Java/jdk1.6.0_21。
(2) PATH环境变量原来Windows里面就有,你只需添加一个路径(JDK的bin目录路径):%JAVA_HOME%/bin 。(%%引起来的其实就是引用上一步设定好的环境变量JAVA_HOME,直接写成C:/Program Files/Java/jdk1.6.0_21/bin也是可以的)。
(3)CLASSPATH环境变量, 作用是指定类搜索路径,JVM就是通过CLASSPATH来寻找类的。我们需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到CLASSPATH中,当然,当前目录“.”也必须加入到该变量中。这里CLASSPATH为:CLASSPATH= .;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar
三:JVM的ClassLoader加载流程
(1)JVM启动,运行bootstrap classloader(启动类加载器),该加载器自动加载了Java核心API(其中包括ExtClassLoader和AppClassLoader),这些基础类库在%JAVA_HOME%\jre\lib目录下。(补:通过亲委派模型保证了基础类库只会被Bootstrap ClassLoader加载,这也就保证了基础类的唯一性)
(2)然后调用ExtClassLoader加载扩展API,这些扩展类库在%JAVA_HOME%\jre\lib\ext目录下,有时候我们也要自己import这里面的类,但是并没有基础类库用的频繁。
(3)最后,AppClassLoader加载CLASSPATH目录下定义的class,(二)中设置的dt.jar和tools.jar似乎与远程调用和UI有关(一般用不到)。
一般情况下我们不设置CLASSPATH也没关系,具体原因参考下面两篇博文:
《java 也可以不配置 classpath》http://blog.csdn.net/deitytu/article/details/11533123
《详细说明JDK环境变量中dt.jar、tools.jar等变量值的作用》 http://blog.csdn.net/ns_code/article/details/18547959
Windows系统环境变量、JAVA环境变量配置以及JVM加载过程的更多相关文章
- Windows 7下配置JDK环境变量,JAVA环境变量配置,Tomcat服务器的使用
参考来源: http://www.cnblogs.com/pannysp/archive/2012/03/07/2383364.html 1. 常识: 1.1 War包 War包一般是在进行Web开发 ...
- Windows 10 设置 Java 环境变量
首先你需要在我的电脑中打开,找到环境变量属性. 找到环境变量属性 找到环境变量属性后单击将会看到下面的设置界面. 在这个界面中设置高级系统设置. 环境变量 在弹出的界面中选择设置环境变量. 系统变量 ...
- windows下,java环境变量的设置,设置点击startup.bat启动tomcat
1.首先.安装好java jdk以后环境变量设置: CLASSPATH:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar JAVA_HOME:C:\ ...
- Java web 项目 web.xml 配置文件加载过程
转载自:http://blog.csdn.net/luoliehe/article/details/46884757#comments WEB加载web.xml初始化过程: 在启动Web项目时,容器( ...
- Linux中如何设置java环境变量
这里介绍Linux下如何设置java环境变量. 工具/原料 Linux java环境变量 方法/步骤 1 查看java的安装路径 查看java执行路径 配置java环境变量 java的安装 ...
- 利用脚本,一键设置java环境变量(默认安装路径)
Windows一键设置Java环境变量 右击以管理员方式运行,注意自行更改JAVA_HOME目录文件安装目录. JDKSetting.bat @echo off color 0a echo.----- ...
- Windows 下java环境变量的配置(Windows7 ,8,8.1,10)
Windows 下java环境变量的配置 在“系统”面板的左上角选择“高级系统设置”,在弹出的系统属性中选择”高级“项,然后点击右下角的“环境变量(N)...”,就此进入JAVA环境变量的配置. 如果 ...
- Windows 10 Java环境变量配置
Win10下 Java环境变量配置 首先,你应该已经安装了 Java 的 JDK 了(如果没有安装JDK,请跳转到此网址:http://www.oracle.com/technetwork/java/ ...
- Windows 7下配置JDK环境变量和Java环境变量配置
下面来介绍一下Java环境变量配置,是在Windows 7下配置JDK环境变量. 方法/步骤 1 安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为:C:\Program Fil ...
随机推荐
- <url-pattern>/</url-pattern> 拦截请求
一.springmvc 前端控制器 <!-- springmvc的前端控制器 --> <servlet> <servlet-name>fw-sso-web</ ...
- Elasticsearch 7.0 发布都有哪些新特性
了解about云知识星球 .pcb{margin-right:0} 问题导读 1.Elasticsearch&Kibana 7.哪些需要修改? 2.Elasticsearch7 有哪些新特性? ...
- asp.net mvc--传值-后台->前台
后台传值到前台的方式 Model Binding # 这是public ActionResult中的最后部分 return View(listmode); json方式01 public void G ...
- crm2013使用图片字段
在CRM2013能够加入图片字段(一个实体仅仅能加入一个图片字段) watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveV9mMTIz/font/5a6L5L2 ...
- NYOJ 145 聪明的小珂
/* 题目大意:求解和输入数的互质的数 解题思路:求解和 n 互质的最大数.从n/2開始找 关键点:GCD函数的使用 解题人:lingnichong 解题时间:2014-10-04 16:11:55 ...
- Android - 使用JD-GUI反编译Android代码
使用JD-GUI反编译Android代码 本文地址: http://blog.csdn.net/caroline_wendy Android程序出现Bug时,须要依据Bug寻找问题出错的地方; 须要使 ...
- awesome-free-software
Free software is distributed under terms that allow users to run the program for any purpose, study ...
- SAN (Storage Attached Network),即存储区域网络
NAS和SAN既竞争又合作,很多高端NAS的后端存储就是SAN.NAS和SAN的整合也是存储设备的发展趋势,比如EMC的新产品VNX系列. 关于NAS和SAN的区别,可以列出很多来.比如带宽大小,距离 ...
- http server优雅启停原理及验证
问题背景 在 http应用程序重启时,如果直接 kill -9 使程序退出,然后再启动,会存在的问题: 旧的请求未处理完,如果服务端进程直接退出,会造成客户端连接中断(收到 RST) 新请求打过来,服 ...
- 数据库 The Network Adapter could not establish the connection解决方案
连接数据库 注意 url ip地址换的时候 oracle 里的listener.ora thnsnames.ora也要随之变化 重启数据库 不然可能会报出 java.sql.SQLException: ...