码迷,mamicode.com
首页 > 编程语言 > 详细

浅谈Java中path、classpath环境变量的配置问题

时间:2014-12-23 19:41:38      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:java   环境变量   path   classpath   初学者   入门   

一、 编译和运行Java程序必须经过两个步骤:


1、将源文件编译成字节码;

2、解释执行平台无关的字节码程序。


二、问题


    以上两个步骤分别需要使用javac和java两个命令(javac命令对java源文件进行编译生成class文件,java命令对生成的class文件进行运行),如果我们直接在cmd命令行窗口里依次输入javac和java命令,可能会看到以下错误:

技术分享


    另外当我们移动了class文件后,执行java命令时,会出现以下错误:

技术分享


三、分析问题


    我们已经在计算机里安装了JDK,而jdk的安装路径下也包含了java和javac命令,为什么会出现这样的错误

 错误一原因是命令行或控制台没有找到javac和java命令。

    当我们输入javac或java命令时,命令行会先在当前目录中(上例为:E:/Demo/java)查找是否有javac.exe或java.exe 这个文件,若没有则在系统的path环境变量中查找。


 错误二:这是因为命令行没有找到class文件。

    当我们执行java命令时,若没有配置classpath环境变量,则java虚拟机会在当前目录下查找class文件(即Java类),若当前目录下没有,则会出错;若我们配置了classpath环境变量,则java虚拟机会直接到环境变量指定的路径查找。

    

四、解决方案

 

错误一:  

    根据问题分析,错误一的解决方案有两种:一是需要我们找到文件所在目录,二是直接在系统里配置path环境变量。

很显然第一种方法太麻烦了些,而第二种方法可谓是一劳永逸,它可以让我们在任意目录下都可以执行程序。那得如何配置path环境变量呢?


path环境变量


   Windows操作系统根据Path环境变量来查找命令。PATH环境变量的值是一系列路径,如我的计算机里的path变量是这样的:

D:\TELLHOW\java\jdk1.5.0_09\bin;%CATALINA_HOME%\lib;%CATALINA_HOME%\bin;C:\Windows\System32;D:\app\Administrator\product\11.2.0\dbhome_1\BIN;D:\Program Files\MySQL\MySQL Server 5.5\bin   

Windows将在这一系列的路径中依次查到命令,如果能找到这个命令,则该命令是可执行的,否则就会出错。

(path和PATH在Windows操作系统中是没有区别的,它不区分大小写)

    因此,我们只需找到javac和java命令的存放路径,如:D:\TELLHOW\java\jdk1.5.0_09\bin,添加进path环境变量中即可,注意用“;”分号隔开。

技术分享

我们可以在命令行内直接输入javac,按“Enter”键来验证配置是否正确,若看到以上信息(这其实是javac.exe的使用信息,以后我们会用到里面的几个),则表示配置正确(这与路径“E:/Demo/java”无关)。

    写到这可能有人会问,“E:/Demo/java”是谁的地址呢?很显然这是程序javac.exe所运行文件Test.java的路径。


错误二


    几乎每一本介绍java入门的书里都会介绍classpath环境变量的配置,在网上也有很多,但对于classpath环境变量的作用则常常语焉不详。

    其实,如果使用1.5以上版本的JDK,完全可以不用设置classpath环境变量就能正常运行程序。因为1.5版本以上JDK有一个功能,它会自动搜索当前路径下的类文件,而且使用Java的编译和运行工具时,系统可以自动加载dt.jar(是关于运行环境的类库,主要是swing的包)和tools.jar(是关于一些工具的类库)文件中的Java类,因此不再需要设置classpath环境变量了。

    但是其之前的版本并没有这样的功能,所以我们会看到网上会有这样的配置:.;C:\ProgramFiles\Java\jdk1.7.0_05\lib\dt.jar;C:\Program Files\Java\jdk1.7.0_05\lib\tools.jar;

这个配置中前面一点表示当前路径,另外是将dt.jar和tools.jar两个文件添加到classpath环境变量里。

    从上不知道你有没有发现问题,一个1.7版本的竟然还在使用1.4及以前的classpath环境变量配置方法,这似乎说明了一个问题,IT行业飞速发展,知识在不断地更新,网上其实有很多的知识是滞后的,所以我们必须重视这样的一个问题,不能太过实用主义。

    那么classpath环境变量的作用是什么呢?

    如果我们有很多类文件并放在不同的路径下,当我们需要执行指定路径下的文件时,这时classpath环境变量就体现了它的用处。


五、问题延伸


    不知你有没有想过,在一些特殊的情况下我们可能会使用临时的环境变量配置。比方说我们借用别人的计算机时,却不能改动别人的计算机设置,这时你会怎么做?我想最好的办法就是一个移动U盘加临时环境变量配置。

    临时环境变量配置可以使用DOS命令,在cmd命令行中输入set,你会看到你的计算机中所有的环境变量,如图所示:

技术分享

而通过输入set  path可显示出path的所有变量,如图:技术分享


而设置临时的path环境变量则只需输入:

set  path=F:/Demo/java即可,它对计算机系统中的配置没有影响。

技术分享

另有输入:

set path=F:/Demo/java;%path%

这表示在原有的设置上添加一个路径,对对计算机系统中的配置没有影响。

总结一下就是:

set:用于查看本机的所有环境变量;

set 变量名:查看一个具体的环境变量;

set 变量名=:清空一个环境变量;

set  变量名=具体值:给指定变量定义具体指;

set 变量名=具体值;%path%:在原有环境变量基础上添加新值。

注意:这种配置方式只在当前dos窗口有效,窗口关闭后则配置消失。


    同理可得,classpath环境变量的临时配置也是一样,在此不多啰嗦。


    


本文出自 “云飞墨舞” 博客,请务必保留此出处http://wuyunncu.blog.51cto.com/5978596/1593900

浅谈Java中path、classpath环境变量的配置问题

标签:java   环境变量   path   classpath   初学者   入门   

原文地址:http://wuyunncu.blog.51cto.com/5978596/1593900

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!