`
sumongh
  • 浏览: 222815 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

classpath详解

阅读更多

    classpath详解

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

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

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

注意:JDK 1.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 环境变量。其格式为: 
   set CLASSPATH=path1;path2 ...
路径应该以指定驱动器的字母开头,例如 C:...。这样,在偶然切换到不同驱动器时仍可找到类(例如,如果路径项以 ... 开头,并且当前位于驱动器 D: 上,则所需的类将在 D: 而不是 C: 驱动器上找)。 
清除 CLASSPATH
如果 CLASSPATH 环境变量被设置成不正确的值,或启动文件或脚本程序设置了不正确路径,则可通过使用下列命令清除 CLASSPATH: 
  C:> set CLASSPATH=
该命令仅清除当前会话的 CLASSPATH。要确保在以后的会话中具有正确的 CLASSPATH 设置,则应该删除或修改启动设置。 
更改启动设置
如果在系统启动时设置 CLASSPATH 变量,则查找它的位置取决于所使用的操作系统: 
  操作系统 方法 
Windows 98 和 
Windows 95 检查 autoexec.bat 文件中的 set 命令。 
Windows NT 启动“控制面板”,选择“系统”,单击“环境”选项卡,并在“用户变量”部分中,检查 CLASSPATH 变量。 

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

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

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

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

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

   java -classpath C:javaMyClassesmyclasses.jar utility.myapp.Cool
多重指定
要在目录 C:javaMyClasses 和 C:javaOtherClasses 中查找类文件,则可将类路径设置为: 
   java -classpath C:javaMyClasses;C:javaOtherClasses ...
注意两个路径之间用分号分隔。 
指定次序
指定多个类路径项的次序是相当重要的。Java 解释器将按照目录在类路径变量中的次序在各个目录中查找类。在上例中,Java 解释器首先在目录 C:javaMyClasses 中查找需要的类。只有当它在该目录中没有找到该类时,解释器才能到 C:javaOtherClasses 目录中查找。 



分享到:
评论

相关推荐

    Path和classpath配置详解

    NULL 博文链接:https://ayangtian.iteye.com/blog/937599

    Java零基础 - classpath环境变量详解.md

    classpath环境变量详解; 设置classpath环境变量(Windows)的步骤; 设置classpath环境变量(macOS和Linux)的步骤; 示例源码:Main.java, ExternalLibrary.java。 阅读建议: 在设置classpath环境变量之前,请...

    Java学习材料(499篇文章)

    CLASSPATH详解;JAVA SOCKET编程;JAVA 编程技术中汉字问题。

    JavaWeb项目中classpath路径详解

    今天小编就为大家分享一篇关于JavaWeb项目中classpath路径详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    JAVA技术和一些简单实例

    一个简单的Servlet--产生存文本、classpath详解(谨献给那些找不到北的朋友)、J2EE配置指南、Java Socket编程、JDBCTM 指南、WebSphere快速入门等等,希望有你所需要的!

    详解path和classpath的区别

    主要介绍了详解path和classpath的区别的相关资料,需要的朋友可以参考下

    java动态添加外部jar包到classpath的实例详解

    主要介绍了java动态添加外部jar包到classpath的实例详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下

    JAVA获取CLASSPATH路径的方法详解

    主要介绍了Java 中获取类路径 classpath 的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

    基于获取JAVA路径,包括CLASSPATH外的路径的方法详解

    本篇文章是对获取JAVA路径,包括CLASSPATH外的路径的方法进行了详细的分析介绍,需要的朋友参考下

    Apache+Tomcat集群配置详解

    Apache+Tomcat集群配置详解 把Apache安装为运行在80端口的Windows服务,安装成功后在系统服务列表中可以看到Apache2.2服务。对于已安装IIS的机器,在启动Apache服务之前必须首先停止IIS Admin服务,不然会因为端口...

    java导入导出详解

    Jxl 简单运用 jxl.jar 包简介 ...特征: ● 支持Excel 95-2000的所有版本 ● 生成Excel 2000标准格式 ● 支持字体、数字、日期操作 ...将下载后的文件解包,得到jxl.jar,放入classpath,安装就完成了。

    详解Java中-classpath和路径的使用

    本篇文章主要介绍了Java中-classpath和路径的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    xfire的使用详解

    &lt;param-value&gt;classpath:spring/app.xml,classpath:org/codehaus/xfire/spring/xfire.xml &lt;!--配置xfire ws--&gt; &lt;servlet-name&gt;XFireServlet &lt;servlet-class&gt;org.codehaus.xfire.spring....

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    3.1.3 设定Path、Classpath和JAVA_HOME 3.2 验证JDK是否安装成功 3.3 建立J2EE的开发环境 3.3.1 下载SDK 3.3.2 安装SDK 3.3.3 设定Path、Classpath和J2EE_HOME 3.4 小结 第四章 Tomcat使用指南 4.1 Tomcat简介 4.1.1...

    JAVAC_命令详解

    文档为中文编写,基本内容是翻译自jdk官网上的。其中个别翻译的更详尽,此文推荐大家参阅。

    log4j2-所需jar包+配置详解(详细)

     (1).classpath下的名为log4j2-test.json 或者log4j2-test.jsn的文件.  (2).classpath下的名为log4j2-test.xml的文件.  (3).classpath下名为log4j2.json 或者log4j2.jsn的文件.  (4).classpath下名为log4j2....

    java环境配置详解

    主要是对下面几个环境的配置: 1 JAVA_HOME 2 CLASSPATH 3 Path 及安装步骤和汉化方法 测试多次安装100%OK,诸君好运

    jdk环境变量配置详解

    jdk环境变量配置,path,classpath,java_home

    java项目中获取路径详解

    java project和java web project项目中如何获得相对路径、绝对路径问题详解

    spring jar 包详解

    spring jar 包详解 spring.jar是包含有完整发布的单个jar包,spring.jar中包含除了 spring-mock.jar里所包含的内容外其它所有jar包的内容,因为只有在开发环境下才会用到spring-mock.jar来进行辅助测试,正式应用...

Global site tag (gtag.js) - Google Analytics