eclipse 中 默认是选择JRE的,应该修改成JDK ,以及 JDK与jRE的区别

JDK与jRE的区别

 

JDK(Java development kit):Java 开发工具,包括一系列java命令,如javac(java compiler) 等;同时jdk包含jre,由于jdk实际上是面向java开发人员的,开 发完以后还要进行调试运行等,这就须要jre了;java

JRE(java runtime environment):java 运行时环境,java文件被javac编译事后造成字节码文 件,这个文件计算机是不能理解和处理的,须要有jvm(java virtual machine)处理后造成机器语言在传递给计算机处理 (这也是为何说java具备平台无关性)。Jvm就存在于jre 中。可见,jre实际上是面向java程序的使用者;windows

 

因此,当你须要开发一个java程序时,你须要的是jdk,但若是须要运行一个java程序,就须要jre了。让人迷惑的是,当你下载并安装jdk以后,会发如今jdk文件夹内部和外部同时存在jre文件夹(证实了jdk包含jre),下面咱们来讲说其中的缘由:tomcat

 

内部jre:当你开发java程序时,须要用到一些javac之类的命令,就会调用jdk(java开发  工具)内部的jre;oracle

外部jre:当你只须要运行一个java程序而不是开发时,就会调用外部的jre;eclipse

那么为何要分两个呢?公用一个不就好了吗,还节省了资源。其实分为两个jre,更多的是为了提升性能和效率,打开两个jre的文件夹,对比一下会发现:jvm

外部jre中,在其client文件夹里面,有个jvm.dll;内部jre中,多了个server文件夹,其中也有个jvm.dll文件,主要是两个vm的区别,使得内外部jre有不一样的分工,而且能在各自的分工上作到最好(提升各自的效率和性能)。maven

 

附上Oracle官网的一张截图:工具

 

http://docs.oracle.com/javase/7/docs/性能

 

从这张图中能够获得:JVM⊂JRE⊂JDK开发工具

说到这里,顺便提一下windows下环境变量中的path和classpath,毕竟好记性不如烂笔头!

安装好jdk以后,下一步就要配置环境变量了,怎么配置就很少说了,网上不少,简单的说一下为何要分这两个来配置:

path变量:与其中的值相对应的路径下面是一些java命令程序,如javac;

Classpath变量:与其中值相对应的路径下面是程序须要用到的一些java提供的类(jar包);

有时也用到JAVA_HOME环境变量,它指向jdk的安装目录,Eclipse/tomcat等就是经过其找到并使用安装好的jdk。配置好以后,便可在任何目录下用java命令执行java程序。那么为何系统能够在任何目录下使用JDK提供的命令呢?

 

其实环境变量就是可以让系统更快速方便的找到所需的东西,有兴趣的能够看一下windows系统变量中的path变量中已有的值,例如C:\Windows\system32;,按这个路径打开,会发现里面有不少可执行文件,好比cmd.exe,这就是为何咱们可以在“运行”窗口输入cmd以后就出现命令行的缘由。说到这里,你也能够试试利用环境变量启动其余程序!

eclipse中的JDK与JRE:

 

其实写这篇文章的出发点就是由于在Eclipse中用maven时,被各类jre、jdk搞得混乱,因而决定弄清楚。先简单的介绍一下:

Eclipse:是一款集成开发的IDE,能够开发,编译,调试,运行代码等;

JDK:java开发工具,用来将.java文件编译成字节码文件;

JRE:java运行时环境,执行编译后得字节码文件;

Maven:一款项目管理工具;

 

Eclipse中其实内嵌了Java编译器,其编译器的做用等同于jdk中的javac,因此eclipse其实只须要jre就能够编译java文件(在eclipse中当你保存一个java类时,它就会自动编译这个java类,至关于在命令行中用了javac这个命令)。但若是你在eclipse中用了maven这样的工具,可能就没法编译了。由于maven默认使用javac来编译项目的,也就是须要jdk,而若是你的eclipse中某maven项目只指定了jre,就会出现没法编译的状况。就像是启动Tomcat只须要jre,缘由是Tomcat中已经包括了源代码编译器,不须要jdk中的javac来编译。

Eclipse中有几处会用到jdk和jre的,下面列出几个,也是我混乱之处所在:

 

A. Window->preferences->Java->Installed JREs

 

这里Installed JREs中的能够理解为“全局常量”,这里设置好,以后新建的项目都默认用这里选定的jre或者jdk,但若是项目中用了maven的话,前面说了maven默认的是jdk中的javac来编译,因此若是这里仍是用jre的话就会maven install出错,须要选择jdk才行。更改直接Add->Standard VM,点击directory,选择相应的jdk或者jre路径肯定便可。

B.给不一样的项目选择不一样的jre

右击项目名称->build path->configure build path,选择libraries选项卡,选中jre:

 

点击edit:

 

可根据不一样的需求选择不一样的选项卡,并按照提示完成操做便可。注意,当你选择第二个选项卡“替代JRE”时,eclipse会跳转至installed jre中让你选择,所以,须要你提早在installed jre中配置好。

C. Window ->preferences->java->compiler

 

这里也会有一个jdk的选择,就是编译时jdk的版本,须要注意的一点是:

编译时的jdk版本不能高于项目build path中的jdk即运行时jdk,由于高版本中的有些功能在低版本中并不提供。例如,项目中用了泛型,编译时为jdk1.5但运行时为jdk1.4,虽然编译时不报错,但运行时就会出错,由于jdk1.4并不支持泛型;反过来,编译时为jdk1.4而运行时为jdk1.5,虽然编译时报错,但却能够正确运行。

 

总之就是 若是 使用 maven 的时候 请 选择  JDK 。否则会使用 maven 命令报错的。

Eclipse is running in a JRE ,but a  JDK is  required .... 

修改 为 JDK 便可。同时以前的项目 若是使用 了 JRE 也 要修改成 对应的 JDK。

相关文章
相关标签/搜索