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

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

对话框的上面为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. ajax提交数据遇到400异常,原因及解决方案

    开发中遇到的问题, ajax的URL写的正确但是确无法正常跳转, 开发者模式下显示请求400异常. 前后台代码如下 ------------------------------------------ ...

  2. Oracle-查看用户对象信息

    --视图(可查看拥有者.对象名称.创建时间.上次修改时间) SELECT t.OBJECT_NAME, t.CREATED, t.LAST_DDL_TIME FROM user_objects t o ...

  3. [SharePoint2010开发入门经典]四、开发者常见任务

    本章概要: 1.创建不同种类的web部件,包括标准的,可视化的还有数据绑定web部件 2.理解列和内容类型,如何使用它们创建列表 3.理解如何与SPS交互,使用SPS API调用数据 4.创建编辑页面 ...

  4. disruptor实操作手冊(二)

    多消费者场景 上一篇文章介绍了怎样构建一个简单的disruptorproject之后.应该有相当一部分客官骂娘了,确实这种范例在其他地方多的是. 从这篇開始,介绍一些不一样的东西. 一,多个消费者: ...

  5. C++类中静态变量和静态方法的注意事项

    在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量仅仅存储一份供全部对象共用.所以在全部对象中都能够共享它.使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还能够 ...

  6. java里面包的重要性-管理类文件

    包的必要性 包是用来给java源文件分门别类的,java中一个包在windows下就是一个文件夹.包的全限定名是从根文件夹開始的(\src文件夹)以点号作为分隔符,包名和包名之间使用点号隔开,java ...

  7. Mac OS下PHP开发环境的搭建——基于XAMPP和IntelliJ IDEA

    简单记录一下在MacOS下,搭建PHP的开发环境吧.其实,从本质上来说,Mac对于PHP的支持还是很好的,默认带了PHP和Apache,但是由于前期对系统本身不熟悉,所以还是略微走了一些弯路--也就是 ...

  8. oracle 实时查询最耗CPU资源的SQL语句

    1. 先通过top命令查看产用资源较多的spid号 2.查询当前耗时的会话ID,用户名,sqlID等: select sid,serial#,machine,username,program,sql_ ...

  9. WebRTC学习与DEMO资源一览

    一. WebRTC学习 1.1   WebRTC现状 本人最早接触WebRTC是在2011年底,那时Google已经在Android源码中加入了webrtc源码,放在/external/webrtc/ ...

  10. DB-SQL-MySQL-杂项-调优:Mysql千万以上数据优化、SQL优化方法

    ylbtech-DB-SQL-MySQL-杂项-调优:Mysql千万以上数据优化.SQL优化方法 1.返回顶部 1. 1,单库表别太多,一般保持在200以下为宜 2,尽量避免SQL中出现运算,例如se ...