1、首先说明的是,eclipse人家需要jre,而不需要jdk,人家内置的有。你只要在你的电脑上安装一个jre就行。至于jdk,它内置的有
2、eclise也不要求你jdk或者jre配置环境变量,毕竟友不用notepad写代码,dos编译执行
3、myeclise之所以不需你安装jdk或者是jre,要是应为它均有内置
关于eclipse里配置的jdk与tomcat里的版本
如果你eclipse配置使用了1.8的jdk,即编译用1.8的java
但是你tomcat里配置的jre确实1.7的
那么当你给项目不熟项目的时候,他就会报错,提示你--你用高版本的java(jdk)编写并编译的,我版本低执行不了
下边是eclipse在不同情况下,对jdk或者jre不同的处理
简析eclipse启动过程
双击eclipse.exe
加载配置一些信息
寻找javaw.exe、jvm.dll
这里分几种情况讨论寻找过程
1.安装了jdk+jre,没有配置环境变量(jre安装目录为"D:\Program Files\Java\jre7\")
首先在exlipse.exe所在目录的寻找是否有.\jre\bin
若没有这个目录
然后遍历系统环境变量path目录
在这个目录找到了"C:\Windows\System32\javaw.exe"
接着查找jvm虚拟机
以javaw.exe为当前工作目录,在javaw.exe下找有没有
.\j9vm
..\jre\bin\j9vm\
.\client
..\jre\bin\client\
.\server
..\jre\bin\server\
.\classic
..\jre\bin\classic\
.\jrockit
..\jre\bin\jrockit\
如果这些没有找到,则查注册表
HKLM\Software\JavaSoft\Java Runtime Environment
读取版本信息,读完之后
读该版本下RuntimeLib的值,然后查找有没有这个目录
最终找到了D:\Program Files\Java\jre7\bin\client\jvm.dll
以这个jvm.dll所在目录为准,返回两层确定jre的目录为D:\Program Files\Java\jre7\
再查找jre目录下有没有.\lib\i386这个目录,成功之后开始加载eclipse启动需要的jar文件(一般以org.eclipse开头)
2.安装了jdk+jre,path为jdk的bin目录(这里配置为"D:\Program Files\Java\jdk1.7.0_65\bin\")
首先在exlipse.exe所在目录的寻找是否有.\jre\bin
没有这个目录
然后遍历系统环境变量path目录
在这个目录找到了"D:\Program Files\Java\jdk1.7.0_65\bin\javaw.exe"
接着查找jvm虚拟机
以javaw.exe为当前工作目录,在javaw.exe下找有没有
.\j9vm
..\jre\bin\j9vm\
.\client
..\jre\bin\client\
查找到有D:\Program Files\Java\jdk1.7.0_65\jre\bin\client\这个目录
查找该目录是否有jvm.dll
最终找到D:\Program Files\Java\jdk1.7.0_65\jre\bin\client\jvm.dll
以这个jvm.dll所在目录为准,返回两层确定jre的目录为D:\Program Files\Java\jdk1.7.0_65\jre
再查找jre目录下有没有.\lib\i386这个目录,成功之后开始加载eclipse启动需要的jar文件(一般以org.eclipse开头)
eclipse3.1\plugins\org.eclipse.jdt.source_3.1.0\src\org.eclipse.jdt.core_3.1.0\src.zip|org\eclipse\jdt\internal\compiler
3.安装了jdk,没有安装jre,没有配置环境变量
首先在exlipse.exe所在目录的寻找是否有.\jre\bin
没有这个目录
然后遍历系统环境变量path目录
没有找到javaw.exe报错
4.只安装了jre
情况同1,eclipse会读取注册表的值来寻找jre的目录
问:那么用Eclipse开发需不需要安装jdk?如果不需要,那java文件时如何编译成class的?
不需要,eclipse的JDT里自带编译器,源程序在eclipse3.1\plugins\org.eclipse.jdt.source_3.1.0\src\org.eclipse.jdt.core_3.1.0\src.zip|org\eclipse\jdt\internal\compiler目录下(注意自己的版本号)
问:"C:\Windows\System32\"为什么会有javaw.exe这个文件?
安装jre的时候安装程序复制了4个文件到"C:\Windows\System32\"目录,分别是Java.exe、javaw.exe、javaws.exe和WindowsAccessBridge.dll.也就是说用java -version命令和java [class文件名]验证jdk的path环境变量并不靠谱,用javac 命令才是最准确的
问:查找jre目录下有没有.\lib\i386这个目录的作用?
确定使用的jre是32位的还是64位的,64位的Eclipse不能用32位的jre
Eclispe第一次启动要求用户必须安装jre,这是因为?
Eclipse的运行依赖于jdk和jre。Eclipse也是java语言开发的,就像游戏‘我的世界’一样
Eclispe第一次启动要求用户必须安装jre某个版本,是因为?
是因为一般eclise的开发是基于当下最新版本的java语言的,比如今年是2017年,那么我下载的eclispe Version: Neon.2 Release (4.6.2)就必须要求我jre是8版本的
不然无法启动。
而且你一旦安装好jre8(其实我是安装jdk的,因为jdk里附带有jre。单独的jre不好找),进入eclpse后,默认的项目运行环境就是jre8.当然它默认设置的编译环境也是jdk8
设置jre和jdk
jre有两个地方可以设置,一个在eclispe>window>preferences>java>instaled jre
一个是在你的项目中。项目右键>properties>libraris
不过最终其决定性作用的还是后者。前者是给eclispe设置几个的(需要选择一个默认的,如果项目没有确定的话,将使用这个默认的),后者是给项目设置具体使用哪个
jdk其实就是编译环境,只有一个地方设置,且起到决定所有项目的作用,即你写完代码,保存就开始执行编译,在eclispe>window>preferences>java>compiler
对于jre和jdk版本之间,要求尽量还是版本一致,不然容易出错
创建一个项目
其实eclipse,不只是内置了jdk(compire),也内置了jre,而且有很多版本。
我不知道网上为啥说eclispe启动需要jre是因为eclispe内置没有jre,而写项目运行时候需要jre,所以才。。。
不知道是你们没有仔细看还是怎么回事。我的理解为什么eclispe需要jre原因在上上上一条和上上一条我总结的。
如果jre与jdk不一致怎么办?
1、如果设置的compiler即jdk(1.8)>jre(1.5)
当你创建项目时候,选择的是jre1.5,会提示你
The default compiler compliance level for the current workspace is 1.8. The new project will use a project specific compiler compliance level of 1.5.
当前工作区的默认编译器为1.8。新项目将使用一个特定于项目的编译器1.5(没办法啊,因为你项目非要用1.5的jre,那人家只能给你单独配置一个jdk1.5的编译器去编译了)。
2、如果compiler(1.5)>jre(1.8)
比如我创建了个jre为1.8的项目,然后我去修改compiler即jdk的版本至1.5,则会提示
When selecting 1.5 compliance, make sure to have a compatible JRE installed
and activated (currently 1.8)
当选择了1.5编译器(指compiler即jdk),确保有一个兼容的JRE
的运行环境(当前1.8)