java配置环境中jdk和jre
JDK = Java Development Kit 开发套件JRE = java runtime environment 运行环境,里面包含了jvm虚拟机以及各种运行库安装jdk完了之后又会弹出选择让我们安装jre,比如安装了jdk6之后又会安装一个jre6,安装完毕后配置环境,运行java程序成功。但是我在jdk6目录下面也找到了一个jre的目录,点进去看,和jav
JDK = Java Development Kit 开发套件
JRE = java runtime environment 运行环境,里面包含了jvm虚拟机以及各种运行库
安装jdk完了之后又会弹出选择让我们安装jre,比如安装了jdk6之后又会安装一个jre6,安装完毕后配置环境,运行java程序成功。
但是我在jdk6目录下面也找到了一个jre的目录,点进去看,和java目录下的jre6基本是一样的,为什么sun要让我们在一台机器上装两个jre呢,而且看起来好像是一样的程序。
然后上网搜一下,得到答案:
JDK中大部分程序都是用java写的,他们的运行本身就是需要java运行环境的,所以说,要运行jdk必须要有jre,故jdk中的jre不难理解了。而且,jdk中的jre和jre6目录中的运行环境基本相同,都能拿来运行java程序。那执行java.exe操作之后,到底是用了系统中的哪一个jre呢,按照网上的说法:
既然您的電腦裡頭至少有兩套 JRE ,那麼誰來決定用哪一套 JRE 呢 ? 這個重
責大任就落在 java.exe 的身上。
當我們在命令列輸入
java XXX
的時候, java.exe 的工作就是找到合適的 JRE 來執行類 別 檔。 java.exe 依照底
下邏輯來尋找 JRE:
1. 自己的目錄下有 沒 有 JRE 目錄。 ( 這個部分這樣 說 並不是非常精確,原因
請詳見 JDK 原始碼,這此不特 別說 明 )
2. 父目錄底下 JRE 子目錄。(我测试了一下运行ava程序没有优先搜索它,疑惑)
3. 查詢 Windows
Registry( HKEY_LOCAL_MACHINE\Software\JavaSoft\Java
Runtime Environment\ ) 。
所以, java.exe 的執行結果和您電腦裡面哪一個 java.exe 被執行,然後哪一
套 JRE 被拿來執行 Java 應用程式有莫大的關係。
按这样说,只要安装了jdk,每次运行java用的都是jdk中jre里面的运行环境了,但是我把jre6目录重命名之后运行java程序,报错,找不到jre6目录,
这就说明这个优先次序不对,于是我找到注册表项
HKEY_LOCAL_MACHINE\Software\JavaSoft\JavaRuntime Environment\
目录下的这几个值是确定的关键:
也就说,javahome项确定了java运行用jre的目录,于是我把这个值改成jdk目录下的jre目录,下面的runtimelib相应修改,
然后将jre6文件夹改名,再次运行java程序,正常运行。
这样就可以确定,运行一般java程序时,如果目录下没有jre文件夹,就是查找这个注册表项去决定需要的jre
至于sun为什么要给你安装多个jre,我觉得是为了各自分担任务,jdk就使用自己目录下的jre,而一般java程序就用jre6目录下的运行环境,这样互不干扰,能减轻各自jvm的负担,更加稳定。
更多推荐
所有评论(0)