一:用户变量和系统变量的区别

右击我的电脑、属性、高级系统设置、环境变量。

对话框的上面为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

三:JVMClassLoader加载流程

(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加载过程的更多相关文章

  1. Windows 7下配置JDK环境变量,JAVA环境变量配置,Tomcat服务器的使用

    参考来源: http://www.cnblogs.com/pannysp/archive/2012/03/07/2383364.html 1. 常识: 1.1 War包 War包一般是在进行Web开发 ...

  2. Windows 10 设置 Java 环境变量

    首先你需要在我的电脑中打开,找到环境变量属性. 找到环境变量属性 找到环境变量属性后单击将会看到下面的设置界面. 在这个界面中设置高级系统设置. 环境变量 在弹出的界面中选择设置环境变量. 系统变量 ...

  3. windows下,java环境变量的设置,设置点击startup.bat启动tomcat

    1.首先.安装好java jdk以后环境变量设置: CLASSPATH:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar JAVA_HOME:C:\ ...

  4. Java web 项目 web.xml 配置文件加载过程

    转载自:http://blog.csdn.net/luoliehe/article/details/46884757#comments WEB加载web.xml初始化过程: 在启动Web项目时,容器( ...

  5. Linux中如何设置java环境变量

    这里介绍Linux下如何设置java环境变量. 工具/原料 Linux java环境变量 方法/步骤 1 查看java的安装路径   查看java执行路径   配置java环境变量   java的安装 ...

  6. 利用脚本,一键设置java环境变量(默认安装路径)

    Windows一键设置Java环境变量 右击以管理员方式运行,注意自行更改JAVA_HOME目录文件安装目录. JDKSetting.bat @echo off color 0a echo.----- ...

  7. Windows 下java环境变量的配置(Windows7 ,8,8.1,10)

    Windows 下java环境变量的配置 在“系统”面板的左上角选择“高级系统设置”,在弹出的系统属性中选择”高级“项,然后点击右下角的“环境变量(N)...”,就此进入JAVA环境变量的配置. 如果 ...

  8. Windows 10 Java环境变量配置

    Win10下 Java环境变量配置 首先,你应该已经安装了 Java 的 JDK 了(如果没有安装JDK,请跳转到此网址:http://www.oracle.com/technetwork/java/ ...

  9. Windows 7下配置JDK环境变量和Java环境变量配置

    下面来介绍一下Java环境变量配置,是在Windows 7下配置JDK环境变量. 方法/步骤  1 安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为:C:\Program Fil ...

随机推荐

  1. Adnroid_sdk安装代理

  2. windowbuilder01 按钮事件监听

  3. WebStorm 6.0 与 7.0 注册码

    经测试 WebStorm 7均可以使用如下注册码,简直就是神key啊! WebStorm 6.0 与 7.0 注册码 User Name: EMBRACE License Key: ===== LIC ...

  4. bzoj 3236: [Ahoi2013]作业(缺线段树)

    3236: [Ahoi2013]作业 Time Limit: 100 Sec  Memory Limit: 512 MBSubmit: 1744  Solved: 702[Submit][Status ...

  5. hdu 4717 The Moving Points(三分)

    http://acm.hdu.edu.cn/showproblem.php?pid=4717 大致题意:给出每一个点的坐标以及每一个点移动的速度和方向. 问在那一时刻点集中最远的距离在全部时刻的最远距 ...

  6. UFLDL教程笔记及练习答案五(自编码线性解码器与处理大型图像**卷积与池化)

    自己主动编码线性解码器 自己主动编码线性解码器主要是考虑到稀疏自己主动编码器最后一层输出假设用sigmoid函数.因为稀疏自己主动编码器学习是的输出等于输入.simoid函数的值域在[0,1]之间,这 ...

  7. wpf Shake

    <Setter Property="RenderTransformOrigin" Value="0.5 0.5" /> <Setter Pro ...

  8. bzoj1588: [HNOI2002]营业额统计(splay)

    1588: [HNOI2002]营业额统计 题目:传送门 题解: 复习splay所以来刷个水... 题目描述不是特别清楚:应该是找第i天以前一个最小的营业额和第i天做差的最小值作为第i天的最小波动值 ...

  9. 用select拼接insert into,单引号转义

    SELECT 'INSERT INTO dbo.CMS_Transformation ( TransformationName , TransformationCode , Transformatio ...

  10. 【POJ 3904】 Sky Code

    [题目链接] http://poj.org/problem?id=3904 [算法] 问题可以转化为求总的四元组个数 - 公约数不为1的四元组个数 总的四元组个数为C(n,4),公约数不为1的四元组个 ...