现在的位置: 首页 > 综合 > 正文

无需设置JAVA中的CLASSPATH

2014年02月15日 ⁄ 综合 ⁄ 共 2117字 ⁄ 字号 评论关闭

最近学到java中的包时,刚发现一个新问题:classpath无需设定,因为jdk(java2)会预设载入。可能认识的还不全面,请高手多多指点~~~~

CLASSPATH是什么?它的作用是什么?
     它是javac编译器的一个环境变量。
     它的作用与import、package关键字有关。
     当你写下improt java.util.*时,编译器面对import关键字时,就知道你要引入java.util这个package中的类;但是编译器如何知道你把这个package放在哪里了呢?所以你首先得告诉编译器这个package的所在位置;如何告诉它呢?就是设置CLASSPATH啦 :) 如果java.util这个package在c:/jdk/ 目录下,你得把c:/jdk/这个路径设置到CLASSPATH中去!当编译器面对import java.util.*这个语句时,它先会查找CLASSPATH所指定的目录,并检视子目录java/util是否存在,然后找出名称吻合的已编译文件(.class文件)。如果没有找到就会报错!
     CLASSPATH有点像c/c++编译器中的INCLUDE路径的设置哦,是不是?当c/c++编译器遇到include <iostream>这样的语句,它是如何运作的?哦,其实道理都差不多!搜索INCLUDE路径,检视文件!
     当你自己开发一个package时,然后想要用这个package中的类;自然,你也得把这个package所在的目录设置到CLASSPATH中去!
     CLASSPATH的设定,对JAVA的初学者而言是一件棘手的事。所以Sun让JAVA2的JDK更聪明一些。你会发现,在你安装之后,即使完全没有设定CLASSPATH,你仍然能够编译基本的JAVA程序,并且加以执行。

.....................................................................................................................................................

1. PATH环境变量。作用是指定命令搜索路径,在i命令行下面执行命令如javac编译java程序时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。我们需要把jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac/java/javadoc等待,设置好PATH变量后,就可以在任何目录下执行javac/java等工具了。

  2. CLASSPATH环境变量。作用是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们了,JVM就是通过CLASSPTH来寻找类的。我们需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到CLASSPATH中,当然,当前目录“.”也必须加入到该变量中。

  3. JAVA_HOME环境变量。它指向jdk的安装目录,Eclipse/NetBeans/Tomcat等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的jdk。

环境变量CLASSPATH:

    用以指出类别的位元组码(bytecode)档案的搜寻目录。

    在JDK1.3以后版本就不需要设置了。

设置方法:

    在CLASSPATH中加入

    C:/Program Files/Java/jdk1.5.0_06/lib/tools.jar;C:/Program Files/Java/jdk1.5.0_06/lib/dt.jar

1,现在的应用基本上不需要设置CLASSPATH,尤其是指向tools.jar 和rt.jar,只要能够找到jre,系统自动会找到这些jre自带的classpath(除非你人为地把这些jar文件移动到其他地方去了)

2,有些应用程序的启动程序或者启动脚本会自己设置classpath,如果系统原来有classpath,反而会造成混淆。我现在用eclipse, tomcat, jboss, netbeans ,不需要设置额外的classpath都可以正常运行。

3,classpath太多也导致搜索和装载class的速度减慢,因为loadclass的时候,ClassLoader会从整个classpath里面寻找

4,设置的classpath不利于应用的安装部署,一旦运行环境发生变化(如系统升级或者加入新的jar包)经常因手工设置的classpath不对而造成问题。尤其是,跨平台部署的时候,classpath的目录分隔符都不一样的。

我的解决方案:
1,安装jdk或者jre,基本上都按默认安装(你当然可以决定装在不同的目录下),唯一要设置的环境变量是%JAVA_HOME%。无须设置%CLASSPATH%
3,开发的产品,如果是不经常更新的产品,就自己单独提供一个lib目录,下面存放所有需要的jar文件,然后用一个特殊的启动脚本,自动读取该目录下所有的.jar文件来生成%CLASSPATH%变量。

抱歉!评论已关闭.