磨刀不误砍材工 – 环境搭建(为什么要配置环境变量)
最后更新于:2022-04-01 20:08:19
就如同,如果我们想要游泳,前提是需要一个泳池;如果我们想要打篮球,前提是需要一个篮筐一样。
如果我们想要使用Java语言进行开发工作或者想要运行由Java语言编写的程序,那么第一步工作就是搭建一个支持Java语言的环境。
首先我们需要认识Java为我们提供的这两样东西:
JRE - Java Runtime Environment (Java运行环境)
JDK - Java Development Kit (Java开发库)
顾名思义,如果你的目的只是单纯想要在自己的系统环境下运行用Java语言编写的程序,那么通过安装JRE就足够了。
而如果你是作为一名使用Java语言的开发者,就应当选择安装JDK了。而实际上JDK自身也包含JRE,这是必然的,因为作为开发者的最终目的也是编写可运行的程序。([下载JDK](http://www.oracle.com/technetwork/java/javase/downloads/index.html))
现在就可以正式的开始在你的系统环境下搭建Java环境了,搭建的过程其实很简单:
第一步:下载好JDK,找到安装程序按操作提示进行安装。没有任何技术含量。
第二步:配置Java相关的环境变量。需要明确的是, 通常我们配置的相关环境变量有三个:Path,JAVA_PATH,JAVA_HOME;
在深入之前,我们还是先说一说配置环境变量的方法吧,以Win7操作系统为例:
**1.右键点击你的“计算机” - “属性” - “高级” - “环境变量”**
**2.新建一个名为“JAVA_HOME”的环境变量,其值为:你电脑上JDK的安装路径\bin,例如:C:\Program Files (x86)\Java\jdk1.7.0_45**
**3.找到名为“Path”的环境变量,在现有值的最前端加上:%JAVA_HOME%\bin;**
**4.新建一个名为“CLASSPATH”的环境变量,通常值我们配置为:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;****
事实上配置环境的步骤并没有什么技术含量。可能当我们接触java的第一天,就被要求记住配置它们的方法。
但其实这其中还是值得我们一看的,因为像我一样的菜鸟可能通常掌握了配置方法,却可能忽略了配置这些环境变量的目的是什么。
那不妨现在就让我们来认识一下这些可能被我们忽略的地方。
首先看一下,这样一种情况:
打开你电脑的命令行工具,然后输入命令notepad,敲回车。
这时的情况是:你发现你电脑的记事本程序被打开了。
之所以在命令行输入notepad命令,就可以打开window系统中的记事本程序。
其原因就在于环境变量的配置。所以我们可以以此为例,来认识配置环境变量的功用是什么。
还是老样子,右键点击你的“计算机” - “属性” - “高级” - “环境变量” ,找到名为"path"的环境变量。
点击打开查看它的值,然后,以我的电脑为例,你会发现类似于:C:\Windows\system32;这样的值。
然后输入该值进入到对应的系统路径下,你会发现有很多.exe的应用程序,其中就有notepad.exe。
到了这里,我们似乎已经猜到了什么。那么,就不妨动手验证一下,将path变量中的C:\Windows\system32删掉。
这次我们重新在命令行中输入notepad命令。发现得到这样的提示:'notepad' 不是内部或外部命令,也不是可运行的程序或批处理文件。
这时我们其实已经知道了,简单来说,配置Path的作用在于:
可以在任一路径下调用到Path中配置过的路径下的可执行程序。相反如果没有设置过Path,那么想调用某个目的程序,就必须进入到它所在的路径下。
这时,就让我们回过头看一下,我们在配置Java的环境变量时,
在Path里添加了类似如下的值:C:\Program Files (x86)\Java\jdk1.7.0_45\bin,
正如我们测试记事本程序所做的一样,进入到值对应的系统路径下发现:
该路径下几乎全是Java提供的相关的.exe可执行程序工具,其中最重要的两个工具程序正是:java.exe与javac.exe!
javac.exe能够对Java源文件进行编译;java.exe用于查找和运行Java的可执行文件。
接着,前面介绍过了,实际环境搭建中,我们会配置一个名为"**JAVA_HOME**"的环境变量。
这个变量的作用实际很简单,它的值永远都是你的电脑上JDK的安装路径。
以我电脑上的配置为例,使用C:\Program Files (x86)\Java\jdk1.7.0_45\bin;和%JAVA_HOME%\bin;两种方式作为环境Path的值,达到的效果实际一模一样。
以面向对象的思想来讲,我们可以认为我们将自己电脑上jdk的安装路径单独封装成了一个字符串对象"JAVA_HOME"。
因为环境变量PATH的值通常都有很长一串,所以我们使用JAVA_HOME的方式好处就在于:
如果我们JDK的安装路径发生了变化,就不用再打开Path变量,在一长串眼花缭乱的值里面去找到要修改的地方,
而直接找到"JAVA_HOME"变量进行修改就OK了。
最后,就是CLASSPATH环境变量的作用了。
要理解它的作用,首先要知道的是:在Java中,以".java"后缀结束的文件,被视为Java程序的源文件。
当编译器对".java"文件成功编译后,我们会得到一个同名的".class"文件,这个文件才是真正意义上Java的执行文件。
所以,我们配置CLASSPATH环境变量的目的实际就在于:设置虚拟机查找指定".class"文件的路径。
举个例子,就更容易明白了,我们写一个HelloWolrd:
~~~
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello java!");
}
}
~~~
然后,打开命令行工具,利用javac工具对其进行编译,编译成功得到:HelloWorld.class文件。
我将该文件拷出来,放在我的**E盘**根目录下。这时我们就可以来看一下CLASSPATH的作用了。
第一种情况,假设这时我们还没有配置过CLASSPATH环境变量,这时我们在命令行通过:java HelloWorld命令想要运行该程序,结果得到如下信息:错误: 找不到或无法加载主类 HelloWorld
然后,我重新配置CLASSPATH为:E:。这时再通过:java HelloWorld命令运行程序,发现成功得到输出信息:Hello java!
前面我们说,CLASSPATH的值通常配置为:".;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar";
值得注意的是最前面的".","."实际上代表的当前路径。也就是说这样配置虚拟机在运行一个程序时,会首先在你当前所在路径下查找是否存在指定的".class"文件。
到此,关于Java开发环境的搭建的事,已经说的差不多了。最后总结一下三个环境变量配置的意义是什么吧。
JAVA_HOME:顾名思义,JAVA的家,也就是指当前计算机上JDK(或JRE)的安装路径。
PATH:用于设置Java中各种命令行工具的所在的文件夹路径。通过PATH的设置可以保证在系统任一路径下都能调用到Java相关的命令行工具。
CLASSPATH:JVM会在该环境变量下设置的对应该路径下查找指定的.class文件运行。
注:
我们可以将:“计算机” - “属性” - “高级” - “环境变量”这样的配置方式视作一种“一劳永逸”的懒汉式配置方式。这样配置的好处在于:一次配置后,永久有效。
同时还有另一种配置方式,在命令行工具中通过“SET”命令进行配置。这种方式是一种“临时”配置方式,也就是说:配置的环境变量,只在当前运行的命令行程序中有效,当退出命令行后,所配置的环境变量也就失效了。
两种方式各有长短,可以根据实际情况选择使用。
';