path和classpath

来源:互联网 发布:淘宝双十一销售额直播 编辑:程序博客网 时间:2024/04/30 13:28

一直以来都是用Eclipse和MyEclipse来开发java程序,也没过多关注过path和classpath,由于最近在学Linux,就装了个JDK,试着写了个小程序,用javac和java进行编译运行。结果出现了问题,一直报错java.lang.NoClassDefFoundError。经过翻阅多方资料,终于解决了这个问题。

 

首先,了解下classpath和path的区别:

在Windows系统中是不区分大小写的,PATH、path和pAth等都是一样的,如果同时存在时,那么会依次搜索各变量中设置的路径。

1.path的作用

path是系统用来指定可执行文件的完整路径,即使不在path中设置JDK的路径也可执行JAVA文件,但必须把完整的路径写出来,如C:\Program Files\Java\jdk1.6.0_10\bin\javacTheClass.java。path是用来搜索所执行的可执行文件路径的,如果执行的可执行文件不在当前目录下,那就会依次搜索path中设置的路径;而java的各种操作命令是在其安装路径中的bin目录下,所以在path中设置了JDK的安装目录后就不用再把java文件的完整路径写出来了,它会自动去path中设置的路径中去找。

2.classpath的作用

classpath是指定你在程序中所使用的类(.class)文件所在的位置,就如在引入一个类时:import javax.swing.JTable这句话是告诉编译器要引入javax.swing这个包下的JTable类,而classpath就是告诉编译器该到哪里去找到这个类(前提是你在classpath中设置了这个类的路径);如果你想要编译在当前目录下找,就加上“.”,如:.;C:\Program Files\Java\jdk\,这样编译器就会到当前目录和C:\Program Files\Java\jdk\去找javax.swing.JTable这个类;还提下:大多数人都是用Eclipse写程序,不设classpath也没关系,因为Eclipse有相关的配置。

Path是os用的,classpath是java用的。

下面,我们再了解下JDK的一些东西。

Javac和java命令运行的可执行程序都放在JDK的bin目录中,所以需要配置bin的目录到path中。dt.jar和tools.jar位于lib目录下。rt.jar位于jre/lib目录下。

rt.jar 是JAVA基础类库,默认就在Root Classloader的加载路径里面的,不需要在classpath中配置。

tools.jar是工具类库,编译和运行需要的都是tools.jar里面的类,需要配置。

dt.jar是关于运行环境的类库,主要是swing的包,需要配置。

下面是我遇到的问题,自己犯二导致的。

环境变量配置:

JAVA_HOME=C:\ProgramFiles\Java\jdk1.6.0_41

PATH=%JAVA_HOME%\bin;%PATH%

CLASSPATH=%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar

配置好环境变量之后我就开始去编译运行。

我在E盘放了一个Test.java,然后在dos下进行编译和运行,编译通过,但是运行的时候就报错了,就是开篇时说的那个错误。找不到.class文件。这是因为我的.class文件放在E盘,而我没在classpath中配置E:\ ,所以找不到。其实在dos下用以下命令就可以设置临时的变量set classpath=%CLASSPATH%;E:\ 这样设置后就可以运行了,但是临时变量在dos关闭后就失效了。然而最简单的方法就是我们最初学java的时候用的,java –classpath E:\ Test 就可以了,这样是指明路径进行运行。

用久了IDE,竟然把最初学的东西给忘记了,实在是不该啊,所以写这篇文章记录下,望以后改正!

0 0
原创粉丝点击