设置类路径

设置类路径



结构
可通过对JDK工具使用-classpath选项(首选方法)或设置CLASSPATH环境变量来设置类路径。
C:>jdkTool-classpathpath1;path2...
C:>setCLASSPATH=path1;path2...
每个path以文件名或目录结尾,该文件名或目录取决于将类路径设置成什么:
对于包含.class文件的.zip或.jar文件,路径以.zip或.jar文件名结尾。
对于未命名包中的.class文件,路径以包含.class文件的目录结尾。
对于已命名包中的.class文件,路径以包含“root”包(完整包名中的第一个包)的目录结尾。
用分号来分隔多个项目。使用set命令时,需要省略等号两边的空格(=)。其中jdkTool可以为java、javac、javadoc,等等。有关详细列表,参见JDK开发工具。
说明
类路径告诉Java应用程序去哪里查找第三方和自定义类--即不是Java扩展或Java平台一部分的类。在JDK1.2中,JVM和其他JDK工具通过依次搜索平台库、库扩展和类路径来查找类(有关搜索策略的详细信息,参见如何查找类)。
多数应用程序的类库都会充分利用扩展机制。因此,只有想要加载某个类库(a)未位于当前目录或其分枝包中且(b)未位于扩展机制所指定的位置时,才需设置类路径。

如果用户是从旧版本JDK升级而来,则启动设置可能包括不再需要的CLASSPATH设置。这时应该删除任何非应用程序特定的设置。有些使用Java虚拟机的第三方应用程序可能修改CLASSPATH环境变量以包括它们使用的类库。这种设置可以保留。

可通过在调用JVM或其他JDK工具时使用Java工具的-classpath选项改变类路径(例如:java-classpath...)。这是改变类路径的首选方法。还可通过使用CLASSPATH环境变量改变类路径。

注意:JDK1.2缺省类路径是当前目录。设置CLASSPATH变量或使用-classpath命令行开关将覆盖缺省值,因而如果想要在搜索路径中包括当前目录,则必须在新设置中包括“.”。
类可以存储在目录(文件夹)或归档文件(例如classes.zip或classes.jar)中。有关归档文件的详细信息和类路径的工作原理,参见本文档最后的理解类路径和包名。

重要说明:JDK旧版本在缺省类路径中还包括<jdk-dir>/classes项。该目录仅供JDK使用,且不用于应用程序类。应用程序类应该放置在JDK外部的目录。这样,安装新JDK时不必需要重新安装应用程序库。为了与旧版本的兼容性,使用<jdk-dir>/classes目录作为类库的应用程序在当前版本中仍能运行,但不能保证在以后的版本中它们还能运行。
使用Java工具的-classpath选项
Java工具java、jdb、javac和javah具有-classpath选项,在工具运行时它将取代缺省类路径或由CLASSPATH环境变量所指定的类路径。这是改变类路径设置的推荐方法,因为这样每个应用程序可具有它所需的类路径而又不会干扰其他应用程序。
运行时工具java和jdb还具有-cp选项。该选项是-classpath的缩写。

对于非常特殊的情况,java和javac都具有开关,使得可改变它们使用的路径以查找它们自己的类库。但是,绝大多数用户从来都不会用到这些开关。

使用CLASSPATH环境变量


如前一节中所述,一般用户将想要使用-classpath命令行选项。本节将介绍如何设置CLASSPATH环境变量或清除以前安装遗留下的设置。

设置CLASSPATH
在DOS提示符下,可用set命令修改CLASSPATH环境变量。其格式为:
setCLASSPATH=path1;path2...
路径应该以指定驱动器的字母开头,例如C:\...。这样,在偶然切换到不同驱动器时仍可找到类(例如,如果路径项以\...开头,并且当前位于驱动器D:上,则所需的类将在D:而不是C:驱动器上找)。

清除CLASSPATH
如果CLASSPATH环境变量被设置成不正确的值,或启动文件或脚本程序设置了不正确路径,则可通过使用下列命令清除CLASSPATH:
C:>setCLASSPATH=
该命令仅清除当前会话的CLASSPATH。要确保在以后的会话中具有正确的CLASSPATH设置,则应该删除或修改启动设置。
更改启动设置
如果在系统启动时设置CLASSPATH变量,则查找它的位置取决于所使用的操作系统:
操作系统方法
Windows98和
Windows95检查autoexec.bat文件中的set命令。
WindowsNT启动“控制面板”,选择“系统”,单击“环境”选项卡,并在“用户变量”部分中,检查CLASSPATH变量。

理解类路径和包名


Java类被组织成包,而这些包被映射到文件系统中的目录。但是与文件系统不同的是,无论何时指定包名,都应指定完整包名--永远不要仅指定它的一部分。例如,java.awt.Button的包名总是应指定为java.awt。
例如,假定想要Java运行环境在包utility.myapp中查找名为Cool.class的类。如果该目录的路径为C:\java\MyClasses\utility\myapp,则应该将类路径设置成包含C:\java\MyClasses。

要运行该应用程序,可使用下述JVM命令:

C:>java-classpathC:\java\MyClassesutility.myapp.Cool
当该应用程序运行时,JVM使用类路径设置查找在utility.myapp包中定义的任何其他类。
注意:应在命令中指定完整包名。例如,设置类路径包含C:\java\MyClasses\utility并使用命令javamyapp.Cool是不可能的,因为这找不到该类。

(您可能想知道用什么定义类的包名。答案是:包名是类的一部分,并且不能修改,除非重新编译该类。)

注意:包规范机制一个有趣的结果是,属于相同包的多个文件实际上可存在于不同的目录中。对于每个类,包名都是相同的,但是每个文件的路径可从类路径中的不同目录开始。
文件夹和归档文件
当类存储在目录(文件夹)中时,例如c:\java\MyClasses\utility\myapp,则类路径项指向包含包名第一个元素的目录(在这里为C:\java\MyClasses,因为包名是utility.myapp)。
但是当类存储在归档文件(.zip或.jar文件)中时,类路径项则是该.zip或.jar文件的路径。例如,要使用位于.jar文件中的类库,则命令应该类似下述形式:

java-classpathC:\java\MyClasses\myclasses.jarutility.myapp.Cool
多重指定
要在目录C:\java\MyClasses和C:\java\OtherClasses中查找类文件,则可将类路径设置为:
java-classpathC:\java\MyClasses;C:\java\OtherClasses...
注意两个路径之间用分号分隔。

指定次序
指定多个类路径项的次序是相当重要的。Java解释器将按照目录在类路径变量中的次序在各个目录中查找类。在上例中,Java解释器首先在目录C:\java\MyClasses中查找需要的类。只有当它在该目录中没有找到该类时,解释器才能到C:\java\OtherClasses目录中查找。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值