首先是JVM、JRE、JDK三者之间的关系:
java的跨平台性依赖于Java虚拟机:jvm(Java Virtual Machine),而jre(Java Runtime Environment,中文名称作Java运行时环境)则包括了jvm以及java程序所需的核心类库等。JDK(Java Development 'sKit,Java开发工具包)是给java开发人员使用的,其中包含了java的开发工具(javac、Java、javadoc等),也包括了jre,所以安装了JDK,就不用再单独安装jre了。
简单来说:使用JDK开发出Java程序,然后使用jre运行。
环境变量的配置以及排错:
最简单的方法就是直接在Path环境变量中添加jre的bin路径。这是一劳永逸的方法,但是会有潜在的风险,比如每次升级JDK,都需要修改环境变量,这样就需要修改path中的内容,由于path环境变量中包含着系统中的其他重要的软件路径信息,如果由于误操作而删除、修改了path的一部分信息或者全部信息,则就得不偿失了。
解决方法就是新建系统环境变量:JAVA_HOME,里面包含着jre之前的路径信息,在path环境变量中只需要加入%JAVA_HOME%\jre\bin;即可,这样即使JDK升级,也只需要修改JAVA_HOME变量,而不需要修改path。%在这里只是系统默认的分隔符而已,表示引用了名为JAVA_HOME环境变量的路径。
使用set命令修改、删除、查看环境变量。
在dos命令窗口下键入set回车即可看到当前系统的全部环境变量。
使用set命令并不能影响实际环境变量的值,只是在当前dos窗口关闭之前有效。
查看Path环境变量的值:set Path
添加环境变量:set Path=新的环境变量;%Path%
清空Path环境变量:set Path=
使用set命令的好处就是当想要在别人的机器上开发Java程序时,可以将U盘的jre的路径添加到临时环境变量中去,dos窗口一旦关闭就会回复原样。
classpath换环境变量的设置:
假设C盘有C:/myclasses,而当前目录是D:/myclasses,我们如果想要运行C:/myclasses中的文件,则需要切换文件夹,这样很麻烦,我们通常设定classpath路径解决这个问题:set classpath=c:/myclasses,这样即使在D盘下我们也可以运行c:/myclasses中的文件(.class)。但是这样做会导致一个问题:当前路径下的文件不能运行了,提示无法找到文件(如果C:/myclasses下也没有同名文件),如果我们设置成set myclasspath=c:/myclasses;就可以了。原因就是前者强制指定类的文件件,找不到了就报错,而不考虑当前文件夹中有没有。很多人会想用后者,但这是不对的,因为我们设置了类的文件夹,明明没有这个文件但却出了运行结果,这样会导致郁闷非常。如果非得运行当前文件夹中的文件,使用set path=.;c:/myclasses,其中.代表当前文件夹以及子目录。
如果提示找不到类名等错误,最优先考虑两方面问题:
1.文件名和主类名是否相同(public)
2.查看set classpath,看看是否是以;结尾。