`

JDK中JRE与Program Files中的JRE的区别

    博客分类:
  • Java
阅读更多
jvm是jre里头一个动态连接函数库,jdk里面的jre一般用于运行java本身的程序,比如javac,等等.programfiles下面的jre用于运行用户编写的java程序.
JRE下的bin\client 或者 bin\server 的jvm.dll就是JVM了

  • 1.java.exe 如何寻找JRE库的:


当在控制台执行java.exe,操作系统寻找JRE的方式如下:
1) 先找当前目录下有没有JRE
2)再找父目录下有没有JRE
3)接着在PATH路径中找JRE
4)注册表HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\ 查看CurrentVersion的键值指向哪个JRE

所以当运行的是jdk\bin\java.exe的时候,用的jre是bin的父目录jdk下面的jre\
运行java.exe找到了jre后有一个验证程序,验证jre和java.exe的版本是否一致,如果不一致则会发生错误

java -verbose:class Main 显示调用的详细信息
  • 2.JRE类库查找


JRE自带的基础类库主要是JRE\lib t.jar这个文件,包括了Java2平台标准版的所有类库。和JRE的版本一致。

JRE中由ClassLoader负责查找和加载程序引用到的类库,基础类库ClassLoader会到rt.jar中自动加载,其它的类库,ClassLoader在环境变量CLASSPATH指定的路径中搜索,按照先来先到的原则,放在CLASSPATH前面的类库先被搜到,Java程序启动之前建议先把PATH和CLASSPATH环境变量设好,OS通过PATH来找JRE,确定基础类库rt.jar的位置,JRE的 ClassLoader通过CLASSPATH找其它类库。但有时候会出现这样的情况,希望替换基础类库中的类库,那么也可以简单的通过 -Djava.endrosed.path=...参数传递给java.exe,于是ClassLoader会先于基础类库使用 java.endrosed.path参数指定路径的类库。因此Java的版本管理是非常简单有效的,也许很原始,不过很好用,简单就不容易出错。
  • 3.Java的虚拟机启动和加载类库


在Console执行java.exe xxx命令以后,如前所述的寻找JRE,OS找到JRE目录,根据java.exe的传递参数,选择加载Server版的jvm.dll还是Client 版的jvm.dll,然后加载jvm.dll,把控制权交给jvm.dll。

接下来,jvm.dll进行初始化,分配内存等等动作,然后在CLASSPATH路径中寻找class,找到class以后,寻找class中的程序入口点Main函数,然后从Main函数执行程序,在执行过程中,使用ClassLoader动态加载一系列引用到的类。当调用到native方法时,jvm.dll告诉OS在JRE\bin目录下寻找某某DLL文件,调入内存,于是实现了JNI调用。

最后简单说运行实现我们希望目的目录结构(以test目录为例):
test         存项目java文件生成的.class,.jar 等文件.
test/jre/bin 复制对就jdk中的 bin目录就可以。
test/jre/lib 复制对就jdk中的 jre/lib 目录就可以。
建立以上目录结果之后就可以将test/jre/bin/java.exe 发送到桌面快捷方式。
然后修改一下那快捷快方式 目标(T)标位 改成 ...../test/jre/bin/java.exe test ,
这里要注意的是 起始位置(S) 一起在改一下!如下:...../test/ 这个为什么就不用我说了,自己体会吧。:D

对了,再烦一下,使用javaw.exe 试试,可以不要那个该死的console窗口哦。希望上面的文章对大家有所帮助。

分享到:
评论

相关推荐

    jdk与jre的区别

    JDK里面的工具也是用JAVA编写的,它们本身运行的时候也需要一套JRE,...当然,两套JRE中的任何一套都可以用来执行我们自己编写的JAVA程序,但是JDK里面的工具只能由C:\Program Files\Java\jdk1.5.x\目录下的JRE来执行。

    jdk-7u10-windows-i586安装后jdk中jre文件

    jdk1.7.0_10安装后jdk中jre文件 目录:C:\Program Files (x86)\Java\jdk1.7.0_10\jre下的jre文件

    jdk-6u26-windows-i586安装后jdk中jre文件

    jdk-6u26-windows-i586安装后jdk中jre文件 目录:C:\Program Files\Java\jdk1.6.0_26\jre下的jre文件

    jdk1.8.131

    classpath:.,C:\Program Files\Java\jdk1.8.0_131jre\lib\rt.jar,C:\Program Files\Java\jdk1.8.0_131\lib\tools.jar PATH:C:\Program Files\Java\jdk1.8.0_131\bin;C:\Program Files\Java\jdk1.8.0_131\jre\bin

    jdk-8u201-windows-x64

    jdk1.8版本,安装后默认在C:\Program Files\Java\jdk1.8.0_221路径 配置环境变量 新建JAVA_HOME,将jdk路径放置C:\Program Files\...C:\Program Files\Java\jdk1.8.0_221\jre\bin 即可! 最后cmd命令输入java -version

    bcprov-jdk15on-1.54.jar bcprov-ext-jdk15on-1.54.jar下载

    2.将下载的两个JAR文件复制到:JDK安装目录\jre\lib\ext下,例如我的就是D:\Program Files (x86)\java\JDK1.6\jre\lib\ext 3.打开java.security文件:在JDK安装目录\jre\lib\security下的java.security文件。

    jdk7x86安装后jre7

    jdk1.7.0_10安装后jre7文件 目录:C:\Program Files (x86)\Java\jre7下的jre7文件

    jdk6x86安装后jre6

    jdk1.6 安装后jre6文件 目录:C:\Program Files (x86)\Java\jre6下的jre6文件

    JDK18131.zip

    java运行环境jdk1.8.0_131,windows下64位操作系统,添加环境变量JAVA_HOME:D:\Program Files\Java\jdk1.8.0_131 classpath:.,D:\Program Files\Java\jdk1.8.0_131jre\lib\rt.jar,D:\Program Files\Java\jdk1.8.0_131\...

    jdk-13.0.2_windows-x64_bin.rar

    安装完成后配置环境变量,在系统变量新建JAVA_HOME 值为 jdk的安装路径,例如:C:\Program Files\Java\jdk1.8.0_161,然后新建JRE_HOME,值为 jre安装路径,例如:C:\Program Files\Java\jdk1.8.0_161\jre 。现在jdk...

    jdk-13.0.2_windows-x64_bin.zip

    安装完成后配置环境变量,在系统变量新建JAVA_HOME 值为 jdk的安装路径,例如:C:\Program Files\Java\jdk1.8.0_161,然后新建JRE_HOME,值为 jre安装路径,例如:C:\Program Files\Java\jdk1.8.0_161\jre 。现在jdk...

    jdk与jre的区别 很形象,很清晰,通俗易懂

    简单的说JDK是面向开发... 如果安装了JDK,会发同你的电脑有两套JRE,一套位于 \jre 另外一套位于 C:\Program Files\Java\j2re1.4.1_01 目录下,后面这套比前面那套少了Server端的Java虚拟机,不过直接将前面那套的Serv

    java环境变量配置 JDK环境变量

    JAVA_HOME:C:\Program Files\Java\jdk1.6.0_21 PATH:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; classpath:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; java环境变量配置 windows xp下配置JDK环境变量: ...

    jdk-6u20-windows-x64.exe

    在变量值中输入:JDK的存储路径(列如:C:\Program Files\Java\jdk1.6.0_03) 完成后:单击“确认” (3)单击“我的电脑”右键--属性---高级---环境变量; 在系统变量这一栏: 单击:新建 在变量名中输入:...

    jdk 环境布置

    首先,在系统变量中新建JAVE_HOME,路径为D:\Program Files\Java\jdk1.6.0_43 其次,在系统变量的Path的路径最前面,添加 D:\Program Files\Java\jdk1.6.0_43\bin;D:\Program Files\Java\jre6\bin; 最后,在系统变量...

    jdk 配置环境变量 一步到位

    C:\Program Files\Java\jdk1.6.0_02\jre\lib\rt.jar;C:\Program Files\Java\jdk1.6.0_02\lib\tools.jar 配置完后 运行CDM,输入Javac -?。有语法提示则配置成功。Java -version 只是显示版本,不说明配置好。 最好...

    图书管理系统,框架 eclipse + jdk14 + swing + sql server2008

    C:\Program Files\Java\jdk-14.0.1\conf\security\java.security C:\Program Files\Java\jre7\lib\security\java.security C:\Program Files\Java\jre7\lib\security\java.security 打开 java.security 文件之后,...

    jdk+sdk环境变量配置.txt

    C:\Program Files\Java\jdk1.8.0_131(JDK目录路径) ## path C:\Program Files\Java\jdk1.8.0_131\bin;C:\Program Files\Java\jre1.8.0_131\bin (jdk下的bin目录路径和jre下的bin目录路径)注意:每个路径配置完...

    java JDK1.6.0_41 源码

    选中rt.jar文件的这一项:“c:\program files\java\jre_1.5.0_06\lib\rt.jar” 点 左边的“+” 号展开它, 4.展开后,可以看到“Source Attachment:(none)”,点这一项,点右边的按钮“Source Attachment...”, ...

    jdk-6u45-windows-i586 32位安装包

    (1)新建->变量名"JAVA_HOME",变量值"C:\Program Files (x86)\Java\jdk1.6.0_45"(即JDK的安装路径) (2)编辑->变量名"Path",在原变量值的最后面加上“;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin” (3)新建->变量名...

Global site tag (gtag.js) - Google Analytics