环境变量:
环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数,比如临时文件夹位置和系统文件夹位置等。这点有点类似于DOS时期的默认路径,当你运行某些程序时除了在当前文件夹中寻找外,还会到设置的默认路径中去查找。
简单地说环境变量就是在操作系统中定义的变量,计算机上运行的程序都可以访问。这里的“Path”就是一个变量,里面存储了一些常用命令所存放的目录路径。
一.设置环境变量
声明: 运行路径path变量记录的是各个程序所在的路径,系统根据这个变量的值来查找运行程序(各种命令),使得在运行的时候不用输入全路径名;类路径classpath环境变量通常用来记录当前路径和java类库所在的路径。在类库中包含java系统所提供的各种软件包,其中包括各个类和接口等。换句话说源文件在编译时需要搜索环境变量path已找到编译命令,字节码.class文件在解释时需要搜索classpath已找到解释执行命令,而java_home则主要是为eclipse等java开发软件使用已安装好的jdk做准备,作为初学java不使用eclipse等集成开发软件,只使用命令行调用javac java等命令进行编程学习时,可以不配置java_home变量。
用鼠标右击“我的电脑”->属性->高级->环境变量
1.设置JAVA_HOME 变量值:D:\jdk1.5.0_15
JAVA_HOME指向JDK的安装目录;
Eclipse/Tomcat等JAVA开发的软件就是通过搜索JAVA_HOME变量来找到并使用安装好的JDK, 如果你没有配置JAVA_HOME变量,你会发现Tomcat无法正常启动。
2.设置PATH 这个变量已经存在,只需要添加 D:\jdk1.5.0_15\bin 即可
如果配置了1中的JAVA_HOME变量,则配置PATH=%JAVA_HOME%\bin即可
3.设置ClassPath 变量值:.;D:\jdk1.5.0_15\lib\tools.jar;D:\jdk1.5.0_15\lib\dt.jar (.;一定要设置上)
如果配置了1中的JAVA_HOME变量,只需要添加CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar即可。
CLASSPAH指向类搜索路径,.;表示在当前目录搜索,由于java程序经常要用到lib目录下的 dt.jar和tools.jar下类,所以这两项也要加进来,如果在命令行编译和运行的程序还需要用 到第三方的jar文件,则也需要把第三方JAR文件加入进来。
注意:如果使用1.5以上版本的JDK,完全可以不用设置CLASSPATH环境变量,也可以正常编译和运行Java程序,当然,即使使用JDK1.5以上版本,也可以设置CLASSPATH环境变量,一量设置了该环境变量,JRE将会按该环境变量指定的路径来搜索Java类。
今天安装的最新版1.8.0_25,安装完jdk和jre之后,在没有配置环境变量的情况下,解释命令java可以直接执行java程序,但javac编译命令则不行,也就是说.class字节码文件可以直接解释执行了。仅仅在path中添加D:\Program Files\Java\jdk1.8.0_25\bin路径(jdk8.0的安装位置),在命令行模式下java程序的编译执行都可以进行了。之后对环境变量进行完整配置,效果也是一样的。印证上面的说法都是实际可行的。
二.设置环境变量的作用
1,设置JAVA_HOME:
(1).为了方便引用,比如,你JDK安装在C:\Program Files\Java\jdk1.6.0目录里,则设置JAVA_HOME为该目录路径, 那么以后你要使用这个路径的时候, 只需输入%JAVA_HOME%即可, 避免每次引用都输入很长的路径串;
(2).归一原则, 当你JDK路径被迫改变的时候, 你仅需更改JAVA_HOME的变量值即可, 否则,你就要更改任何用绝对路径引用JDK目录的文档, 要是万一你没有改全, 某个程序找不到JDK, 后果是可想而知的----系统崩溃!
(3).第三方软件会引用约定好的JAVA_HOME变量, 不然, 你将不能正常使用该软件, 以后用JAVA久了就会知道, 要是某个软件不能正常使用, 不妨想想是不是这个问题.
2,设置CLASSPATH:
CLASSPATH环境变量,作用是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们了,JVM就是通过CLASSPTH来寻找类的。我们需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到CLASSPATH中,当然,当前目录“.”也必须加入到该变量中。
这个变量设置的目的是为了程序能找到相应的".class"文件, 举个例子: 你编译一个JAVA程序---A.java, 会得到一个A.class的类文件,你在当前目录下执行java A, 将会得到相应的结果(前提是你已经设置CLASSPATH为"."). 现在, 你把A.class移到别的目录下(例如:"e:\"), 执行java A, 将会NoClassDefFindError的异常,原因就是找不到.class文件, 现在你把CLASSPATH增加为:".;e:\"再运行java A, 看看会有什么结果, 一切正常, java命令通过CLASSPATH找了.class文件!
设置CLASSPATH中的dt.jar和tools.jar,因为这些jar包可能在编译运行java类中用到,举个例子:假设A.java文件中用到了 dom4j.jar 这个包,这个包在D盘下,如果运行 javac A.java会出错,因为找不到dom4j.jar包,在环境变量CLASSPATH中添加上jar包的路径 D:/dom4j.jar,再次运行 javac A.java 和java A 就不会出错了。 如果你不想将D:/dom4j.jar放到环境变量中,可以执行javac -classpath D:/dom4j.jar; A.java 编译出A.class, 执行java -classpath D:/dom4j.jar; A(一定要有;号) 可以运行 A.class得出结果,当需要引入多个jar包时,将所有jar包罗列出来 用; 号隔开即可,例如javac -classpath D:/dom4j.jar;D:/log4j.jar; A.java
3,设置PATH:
PATH环境变量,作用是指定命令搜索路径,在命令行下面执行命令如javac编译java程序时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。我们需要把jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac/java/javadoc等待,设置好PATH变量后,就可以在任何目录下执行javac/java等工具了。
想在任何时候都使用%JAVA_HOME%\bin\java 等来执行java命令吗, 当然不会, 于是, 可以选择把 %JAVA_HOME%\bin添加到PATH路径下, 这样, 我们在任何路径下就可以仅用java来执行命令了.(当你在命令提示符窗口输入你个代码时,操作系统会在当前目录和PATH变量目录里查找相应的应用程序, 并且执行.)
配置完之后可以使用javac命令进行检验,如果显示其帮助信息说明配置成功。
用法:javac <选项> <源文件>
其中,可能的选项包括:
-g 生成所有调试信息
-g:none 不生成任何调试信息
-g:{lines,vars,source} 只生成某些调试信息
-nowarn 不生成任何警告
-verbose 输出有关编译器正在执行的操作的消息
-deprecation 输出使用已过时的 API 的源位置
-classpath <路径> 指定查找用户类文件的位置
-cp <路径> 指定查找用户类文件的位置
-sourcepath <路径> 指定查找输入源文件的位置
-bootclasspath <路径> 覆盖引导类文件的位置
-extdirs <目录> 覆盖安装的扩展目录的位置
-endorseddirs <目录> 覆盖签名的标准路径的位置
-d <目录> 指定存放生成的类文件的位置
-encoding <编码> 指定源文件使用的字符编码
-source <版本> 提供与指定版本的源兼容性
-target <版本> 生成特定 VM 版本的类文件
-version 版本信息
-help 输出标准选项的提要
-X 输出非标准选项的提要
-J<标志> 直接将 <标志> 传递给运行时系统