`
jaychang
  • 浏览: 728098 次
  • 性别: Icon_minigender_1
  • 来自: 嘉兴
社区版块
存档分类
最新评论

JAVA 对CLASSPATH的详细介绍

阅读更多

如何设置CLASSPATH,是初学者常提出的问题。网上有很多文章提到了许多如何设置的方法,但是都没有讲为什么要这样设置(令人感到悲哀的是:绝大部分的人的观点是不正确的)。
为了帮助大家更好的学习JAVA的基本知识,同时也是锻炼自己的Type水平,于是有了这篇文章的诞生。主要参考资料来自来自官方JDK文档,希望对大家有用(所说的观点针对1.4.2 and 5.0版本)。


1. 预备知识
1.1安装JDK
http://java.sun.com 根据不同的操作系统,下载相应的J2SE JDK 版本 (写这篇文章时最新的JDK 为1.5 update 7)。假定我们把JDK安装到D:\JDK\1507 ,不安装public JRE。

1.2 设置path
在[我的电脑]上右击,选择[属性]。再选择[高级]-[环境变量],在[系统变量]中添加一个新的变量
JAVA_HOME=D:\JDK\1507,然后再编辑path变量,在原来的path前面添加[ %JAVA_HOME%\BIN; ]
(方框中的文字)。这样就完成了JAVA的基本设置。(windows 98 下如何在autoexec.bat 中设置,请自己找资料)

1.3 演示程序

为了帮助理解,我写了一个JavaBootTest.java 的小程序来显示。

public class JavaBootTest {
public static void main(String[] args) {
System.out.println(" The Classpath are: ");
System.out.println(System.getProperty("java.class.path"));
//other program lines
}
}

用下面的两条命令分别编译和运行。

javac JavaBootTest.java
java JavaBootTest

2. JAVA程序运行时如何查找类文件
根据JDK 文档说明, JAVA 程序以以下3种顺序查找运行的类文件。
1.Bootstrap classes (*)
2.Extension classes
3.Users classes

2.1 Bootstrap classes
就 是JAVA在启动时载入的类文件,这些类文件主要是rt.jar 和 jre/lib 目录下的一些类文件。Bootstrap过程中的class path是保存在 sun.boot.class.path 系统属性中的。可以通过 System.out.println(System.getProperty("sun.boot.class.path")); 来显示。同时Bootstrap classes 可以通过 -Xbootclasspath 命令行参数来指定。
下面列出了系统中默认的Bootstrap classes:
jre\lib\rt.jar; jre\lib\i18n.jar;
jre\lib\sunrsasign.jar; jre\lib\jsse.jar;
jre\lib\jce.jar; jre\lib\charsets.jar;
jre\classes

* Bootstrap
bootstrap是皮鞋后部的一条小带子或一个小环,它可以使你方便地把鞋子穿起来。在计算机中,是指使用一个很小的程序将某个特定的程序(通常是指操作系统)载入计算机中。

2.2 Extension classes (扩展类文件)
Extension classes 主要是指的jre/lib/ext 目录下的类文件,这些文件必须在jar 文件或 zip 文件中。如果不同名字的jar 文件包含有相同的类文件,那么哪一个类文件被载入是不确定的。

2.3 User classes (用户自定义的类文件)
现在到了最重要的地方了,我们常说的设置CLASSPATH 其实就是指定 User classes。JAVA 按照以下四种顺序查找User classes。
2.3.1. 默认的User classes . (dot) 就是指当前目录。
2.3.2. 系统变量 CLASSPATH 所指定的类库,该变量覆盖(override)默认的User classes。
2.3.3. 用命令行参数 -cp 或 -classpath指定的类库。这个时候覆盖默认的User classes 和CLASSPATH变量。
2.3.4. 通过-jar 参数指定的jar文件。此时覆盖上面的三种情况,如果使用这种情况,所有的类文件必须来自指定的jar 文件。

了解了java如何查找User classes,我们接下来将要学习如何设置 CLASSPATH变量。

3 如何正确设置CLASSPATH
如果只是一般运用java,只是用到java的基本库文件,练练手而已,则不需要设置CLASSPATH 。
但是在一般开发情况下,这是很少遇到的。所以我们要自己设置CLASSPATH 。
我 们一般的方法就是按照2.3.2 来设置CLASSPATH 系统变量,像开始设置path一样,我们可以添加一个CLASSPATH的系统变量。网上有些文章所提到的添加rt.jar 和 tools.jar 等等是不需要的,因为这些类库是属于Bootstrap classes的。我们只要定义User classes ,如果我们要编译servlet 那么只要servlet-api.jar 和 jsp-api.jar 就可以实现基本的需要了。
另外要注意的是2.3.2 override 2.3.1。我们设置CLASSPATH 时要将 .(dot)[表示当前目录]放在CLASSPATH中,然后用 ;(semicolon)分隔开来。由于其他提供的类文件都是放在jar文件中,我们设置时一定要将完整的jar 文件包含在CLASSPATH 中,而不是将其目录添加到CLASSPATH 中(很重要的一点,我以前就是理解错误了)。
这个时候又一个问题出现了,当需要添加的jar 文件过多时,管理java 类库变得很麻烦。所以我认为在基础学习时用命令行编译调试,有利于JAVA的学习,但是到开发时则一定要用到 IDE 工具(现在比较流行的是eclipse 和 netbeans ,还有些人喜欢 jcreator) 。
在eclipse 中通过 [windows][Preferences][Java][Build Path]来指定。其中有两部分Classpath Variables & User Libraries。如何设置在这里就不详细说明了,自己试一下就可以了,比较简单。在新建项目时,把自己定义的变量添加到Build Path 中就可以了。

分享到:
评论

相关推荐

    java classpath 配置详细讲解

    这篇文章将通过一系列实际操作来详细阐述`classpath`的配置过程,帮助大家解决在配置过程中可能遇到的问题。 #### 二、Java Classpath 的概念 在深入了解`classpath`的具体配置之前,首先需要明确`classpath`是...

    Java命令行classpath的设置

    Java命令行classpath(类路径)的设置是Java开发过程中的一项基础操作,对于理解和运行Java程序至关重要。类路径是指定Java虚拟机(JVM)在执行Java程序时查找类文件的位置。正确配置类路径能确保JVM能够找到并加载...

    Java环境配置与设置JAVA_HOME_CLASSPATH_PATH的目的

    在本节中,我们将详细地介绍 Java 环境配置的目的和设置方法。 一、JAVA_HOME 环境变量 JAVA_HOME 环境变量是 JDK 的安装目录,它的设置内容是 JDK 的安装目录。例如,如果您的 JDK 安装在 d:\jdk1.6.0 这个目录下...

    java的classpath的终结者(不会让你失望)

    通过以上介绍,我们可以看到`classpath`在Java开发中的重要性和复杂性。合理设置和管理`classpath`不仅可以提高程序的可维护性和可扩展性,还能有效避免常见的编译和运行时错误。对于初学者来说,理解`classpath`的...

    java classpath 理解

    ### Java Classpath 理解 #### 一、在命令行查看 ...通过以上四个方面的详细介绍,我们可以看出 classpath 在 Java 程序中的重要性和灵活性。正确理解和使用 classpath 对于 Java 开发者来说是非常关键的技能之一。

    java classloader classpath 张孝祥

    本文主要围绕Java类加载器和类路径展开讨论,以加深对Java运行时类加载机制的理解。 #### 二、ClassLoader详解 ##### 2.1 类加载器的概念 类加载器(`ClassLoader`)是Java运行时环境的一部分,它的主要职责是从...

    Java 中的 ClassPath 和 Package

    Java中的ClassPath和Package是Java开发中至关重要的概念,它们直接影响到Java程序的编译和运行。在这篇文章中,我们将详细探讨这两个主题。 首先,让我们理解什么是ClassPath。ClassPath是Java虚拟机(JVM)查找类...

    java中path和classpath的设置

    ### Java中的Path与Classpath设置详解 在Java开发过程中,正确配置环境变量是十分重要的一步。其中,`path`和`classpath`是最为关键的两个环境变量,它们直接影响到Java程序能否正常编译和运行。 #### 一、Path 的...

    java classpath 批量设置脚本

    CLASSPATH="$CLASSPATH:""$jar" done windows : SETLOCAL ENABLEDELAYEDEXPANSION set LIB=xx set CLASSPATH=. FOR %%C IN (LIB\*.jar) DO set CLASSPATH=!CLASSPATH!;%%C echo %CLASSPATH%

    13-Java语言(classpath环境变量)

    Java语言的classpath环境变量是Java开发和运行过程中不可或缺的一个配置项。它定义了Java虚拟机(JVM)在执行程序时查找类文件的路径,确保JVM能够找到所需的类库和资源。理解并正确设置classpath对于Java开发者至关...

    path与classpath区别

    下面,我们将详细介绍path和classpath的作用、区别以及它们在Java开发中的应用。 path的作用 path是系统用来指定可执行文件的完整路径,即使不在path中设置JDK的路径也可执行JAVA文件,但必须把完整的路径写出来,...

    classpath 和path

    `classpath`环境变量则主要用在Java等基于虚拟机的语言中,它告诉Java虚拟机(JVM)在哪里可以找到类文件或jar包。当运行Java程序时,JVM会根据`classpath`中定义的路径来加载所需的类文件。如果类文件不在`...

    java Classpath全解

    本文将详细介绍 `classpath` 的概念、作用及其设置方法,帮助读者彻底解决相关疑惑。 #### 什么是 Classpath? `Classpath`(类路径)是指 Java 虚拟机(JVM)用来搜索 Java 类库的路径集合。当我们在命令行中执行...

    java如何设置JAVA_HOME,path,classpath及其作用

    ### Java环境配置详解 在Java开发环境中,正确配置`JAVA_HOME`、`path`和`classpath`是非常重要的...通过上述步骤的详细介绍,相信Java初学者能够更加清晰地理解这些环境变量的含义及作用,并顺利完成Java环境的配置。

    Path和classpath配置详解

    在Java编程环境中,路径(Path)和类路径(Classpath)是两个至关重要的概念,它们对程序的编译和运行起着决定性的作用。本文将深入解析这两个概念,并结合源码和工具,帮助你理解它们的工作原理。 首先,让我们来...

    关于classpath

    Java的classpath是每个Java开发者都必须了解的关键概念,它决定了JVM(Java虚拟机)在执行Java程序时如何查找和加载所需的类文件。本文将深入探讨classpath的基本原理、配置方式以及如何确保`javac`正确编译运行Java...

    Classpath Variable 解决办法

    在Java编程环境中,`Classpath`(类路径)是一个至关重要的概念,它是Java虚拟机(JVM)查找和加载.class文件的路径。当我们在开发和运行Java程序时,正确配置Classpath是确保程序能正常运行的关键步骤。这篇文档将...

    Java程序调优插件ClassPath Helper/classpathchecker

    Java程序调优---去掉 java 项目中 多余的jar包 两个插件 一、ClassPath Helper 说明: 1.depends on:表示该类依赖于下面的jar包列表。 2.refrenced by:表示该类被下面的jar列表所依赖。 3.unresolved references:...

    java classPath checker

    java classPath checker eclipse myeclipse

Global site tag (gtag.js) - Google Analytics