`

classpath简介

    博客分类:
  • java
阅读更多

       本文的目的是向初学者介绍什么是 classpath,以及如何在项目中组织 classpath。熟悉 classpath 是熟练使用 java/javac 命令的前提。虽然类似的文章非常多,但本文力求做到简单易读。

一、基本用法


--------------------------------------------------------------------------------

classpath 是 Java 最重要的基础概念之一。它是一个编译和运行时都要用到的参数。当没有这个参数时,java 和 javac 命令会取环境变量 CLASSPATH 来代替。如:

javac -classpath . Class1.java        

那么 javac 便会以当前目录(.)作为 classpath。你也可以先将环境变量 CLASSPATH 的值设为“.”,然后执行

javac Class1.java                     

效果是一样的。注意,如果你指定了参数,那么环境变量就会被忽略。所以二者只会取其一。

 

 

 

 

二、classpath 的作用

 


--------------------------------------------------------------------------------

classpath 用来指向系统现有任何一个位置的 java 程序。这样能够提高复用性。比如程序 b 需要用到程序 a 当中的类,那么我不需要将 a 拷贝到 b 那里,只需要在运行 b 的命令中将 classpath 指向 a,那么 b 就可以顺利的引用 a 的类了。

我们知道,java 程序就是某个目录下的一堆 .class 文件,或者打好包的 .jar 文件。所以 classpath 所包含的,也就是目录或 .jar 文件的路径。如果要指向多个程序,路径之间就要用“;”隔开。下面是一个例子:

-classpath .;C:\commons-lang-2.1.jar;C:\commons-collections-3.1.jar

这个 classpath 就依次包含了一个目录和两个 jar 包。

 

 

 

 

三、组织 classpath


--------------------------------------------------------------------------------

classpath可以指向多个位置!当 classpath 很长的时候,我们可以将它们组织一下。为了运行方便,java 程序通常都会提供一个批处理文件(如 run.bat)。文件的内容类似于下面的:

set path=%CLASSPATH%;commons-lang-2.1.jar;  
set path=%path%;program.jar                 
java -classpath %path% MainClass            

那么就算 classpath 再长,也可以像第二行那样化整为零,添加删除都很方便。这比用环境变量方便的多,所以建议不要依赖于 CLASSPATH 环境变量。

像 commons-lang、commons-collections 等这些类库都是很多 java 程序要经常用到的。我们可以将它们放在一起,然后写一个批处理文件将这些文件都包含到变量中,编译或运行时将这个变量赋给 classpath 参数即可。

 

 

 

 

四、一个小例子


--------------------------------------------------------------------------------

假设我有一个类库 C:\commons-lang-2.1.jar,我在 D 盘根目录下创建一个类,内容如下:

import org.apache.commons.lang.StringUtils;             
public class Class1 {                                   
    public static void main(String[] args){             
        System.out.println(StringUtils.isEmpty(null));  
    }                                                   
}                                                       

其中 StringUtils 这个类是包含在 commons-lang-2.1.jar 当中的,所以编译和运行时需要使用 classpath 来指定。
那么编译命令为:
D:\>javac -classpath C:\commons-lang-2.1.jar Class1.java   

运行命令为:
D:\>java -classpath .;C:\commons-lang-2.1.jar Class1       

注意两个命令的 classpath 参数稍有不同。当指定了 classpath 参数时,java 命令只会在 classpath 中寻找类。所以要执行当前目录下的类,就必须将当前目录加入 classpath。

不管哪种 Java IDE,在配置项目的时候都会有一个“依赖关系”,这就是用来在编译或运行的时候生成 classpath 参数的。
总之,classpath 这东西还是不难理解的。另外留个题目:如果 classpath 中的多个路径都包含 com.program.Class1,那么编译时和运行时会使用哪一个呢?请写程序证明一下。

分享到:
评论
1 楼 yangpeihai 2012-07-02  
写得这么详细,居然没有人赞一个,哥们,谢谢分享

相关推荐

    servlet简介

    ### Servlet简介 Servlet是一种用于扩展服务器功能的服务器端小程序,主要应用于Java环境下。Servlet可以生成动态Web页面,并处理客户端发送的请求。它们是Java Web开发中的一个重要组成部分。 ### 关键概念解析 ...

    DB2连接工具

    一 简介 h2 database 是一个开源免费的Java SQL数据库 数据库分为嵌入式 Embedding 和Server模式 要使用embedding mode 需要做以下事情: 1 添加h2 jar到classpath中 2 使用jdbc驱动:org h2 Driver 3 jdbc数据库...

    java基础知识简介

    本教程主要围绕“Java基础知识简介”展开,包括Java语言概述、课程架构、Java SE结构、常用命令操作、语言特性、JDK配置与环境变量设置以及Java注释和API的使用。 首先,Java语言概述部分会介绍Java的历史背景,它...

    eclipse 第三方jar包配置.txt

    #### 二、Eclipse项目结构简介 在深入讨论如何配置第三方JAR包之前,我们需要先了解Eclipse项目的几个关键概念: 1. **项目路径**:指Eclipse项目所在的物理位置。 2. **源代码路径**:项目中的源代码目录,例如`...

    springboot集成freemarker和shiro框架

    spring.freemarker.template-loader-path=classpath:/templates/ spring.freemarker.suffix=.ftl ``` 3. 创建模板:在指定的模板路径下创建`.ftl`文件,编写HTML模板。 **三、Shiro框架简介** Apache Shiro是一个...

    H2 DataBase学习

    二 h2 database 的控制台">一 简介 h2 database 是一个开源免费的Java SQL数据库 数据库分为嵌入式 Embedding 和Server模式 要使用embedding mode 需要做以下事情: 1 添加h2 jar到classpath中 2 使用jdbc驱动:org...

    jsp简介,jsp入门

    **JSP(Java Server Pages)简介** JSP(Java Server Pages)是一种基于Java语言的Web应用开发技术,它被广泛用于构建动态、安全且跨平台的网站。JSP结合了HTML和Java代码,使得开发者可以在网页中直接嵌入Java代码...

    JAVA学习计划和方法

    JAR文件简介** - **定义**: JAR(Java Archive)是一种用于打包Java类库的文件格式。 - **作用**: 方便分发和部署,支持类和资源文件的打包。 **2. 创建JAR文件步骤** - **编写MANIFEST.MF文件**: 指定主类和...

    项目软件简介、下载、安装和配置

    项目软件简介、下载、安装和配置对于初学者来说至关重要,特别是对于想要涉足Java软件开发的新人。本指南将详细介绍三个核心工具:JDK、MyEclipse和SVN,旨在帮助新手快速掌握这些软件的获取、安装及配置过程,从而...

    ojdbc6.jar

    1. **JDBC简介** JDBC是Java Database Connectivity的缩写,它是Java编程语言中用于访问数据库的标准API。通过JDBC,开发者可以编写跨平台的Java应用程序,这些程序能够与各种数据库系统进行交互,包括Oracle、...

    jdk环境变量配置

    #### 一、简介与背景 在进行Java开发的过程中,正确配置JDK(Java Development Kit)环境变量是至关重要的一步。它不仅确保了开发环境的正常运行,还为开发者提供了必要的工具集来编译、运行Java程序。本文将详细...

    JDBC简介-JDBC简介

    ### JDBC简介 JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,它可以为多种关系型数据库提供统一访问接口。JDBC由一组用Java语言编写的类和接口组成,使得开发人员能够通过标准的方法来连接...

    《良葛格Java JDK 5.0学习笔记》.rar

    包含java特性、java学习方法、网络资源汇总、jdk下载和安装、path与CLASSPATH的设置、java基本语法、关于对象的认识、数组、字符串(String类))、Ant简介、JUnit简介。 作者:林信良(网络化名良葛格) 学历:台湾大学...

    Java介绍及JDK配置笔记

    同时,理解classpath的作用至关重要,classpath是一个配置项,它告诉Java运行时系统在哪里寻找类文件。正确设置classpath可以确保程序能正确加载和执行所需的类。 总的来说,Java语言以其强大的跨平台能力和面向...

    JSF环境配置及简介[归类].pdf

    ### JSF环境配置及简介 #### 一、环境配置 **1. 必备工具** - **SUN公司的 JDK:** Java Development Kit 是 Java 编程的基础,提供了编译、运行 Java 程序所需的环境。 - **服务器:** 例如 Tomcat 5,用于部署...

    Java开发环境配置

    1. **Ant简介**: - **定义**:Apache Ant是一款Java平台上的自动化构建工具,它通过XML文件来描述构建过程,简化了软件项目的编译、测试和部署工作。 - **配置**:通常情况下,Ant不需要单独的环境变量配置。...

    Java简介及开发环境搭建.pdf

    ### Java简介及开发环境搭建知识点详解 #### 一、Java简介 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems公司于1995年推出。它被设计为能够在多种平台上运行,即“一次编写,到处运行”(Write Once,...

Global site tag (gtag.js) - Google Analytics