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

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

对话框的上面为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. InitializingBean 和 DisposableBean 指定初始化和销毁方法

    通过实现 InitializingBean 和 DisposableBean 接口,也可以指定 bean 的初始化和销毁方法 二.Student 类 public class Student impl ...

  2. auto-boxing, uboxing,以及缓存问题

    package chengbaoDemo; public class Test02 {    public static void main(String[] args) {        Integ ...

  3. BA--步进电机工作原理

    步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件.在非超载的情况下,电机的转速.停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动 ...

  4. struts2提交多个对象带图片

    一:实体类 二:前台页面 三:Action处理

  5. 在C 函数中保存状态:registry、reference和upvalues

    在C函数中保存状态:registry.reference和upvalues      C函数能够通过堆栈来和Lua交换数据,但有时候C函数须要在函数体的作用域之外保存某些Lua数据.那么我们想到全局变 ...

  6. 0x20 搜索

    这里基本就是入门吧. 可达性统计 用bitset搞的判重,发现这东西是真好用哈,空间还小 #include<cstdio> #include<iostream> #includ ...

  7. QEMU/KVM磁盘在线备份

    QEMU/KVM磁盘的在线完整及增量备份,是"打包"方案的一种具体实现,可实现基于时间点的备份,同时支持本地与远程2种备份方式,并可指定备份文件进行恢复. tag: qemu, k ...

  8. Redis学习笔记(十一) 命令进阶:Connection(连接)

    原文链接:http://doc.redisfans.com/connection/index.html auth password 有时候处于安全性考虑,我们可以使用密码来保护redis服务器,每次连 ...

  9. 关于div中图片水平垂直居中的问题

    最近在做一个项目,里面涉及到不固定尺寸要在div里面水平垂直居中显示 我没有用table布局,而是用了div+css,找了很久,终于在网上找到解决方案,特此记录备用 关键核心代码如下: <div ...

  10. Android 给WebView设置Cookie

    最近项目中用到WebView访问新浪支付页面,有个要求是必须是登录状态,否则会报Token过期,然后我简单的将我从cookie中取得的ticket,即一串数字可以代表用户登录的唯一标识作为参数拼接到u ...