CLASSPATH是Java
编程语言的标准类库的
自由软件实现,由GNU项目提供。它实现了
J2SE 1.4和5.0中的大部分类,因此可用于运行基于Java的应用程序。当CLASSPATH项目开始时,Sun Microsystems公司的官方Java实现的许可证不允许对其Java实现进行任何修改。自CLASSPATH项目开始后,
OpenJDK开始在GPL下发布,并成为Java平台的官方开源参考实现。
自由软件基金会将CLASSPATH视为高优先级项目。
设置Classpath的目的,在于告诉Java执行环境,在哪些目录下可以找到您所要执行的Java程序所需要的类或者包。
软件简介
Java执行环境本身就是一个平台,执行于这个平台上的程序是已编译完成的Java程序(后面会介绍到Java程序编译完成之后,会以.class文件存在)。如果将Java执行环境比喻为操作系统,如果设置Path变量是为了让操作系统找到指定的工具程序(以Windows来说就是找到.exe文件),则设置Classpath的目的就是让Java执行环境找到指定的Java程序(也就是.class文件)。
有几个方法可以设置Classpath,最简单的方法是在系统变量中新增Classpath环境变量。在图2-9中的“系统变量”下单击“新建”按钮,在“变量名”文本框中输入Classpath,在“变量值”文本框中输入Java类文件的位置。例如可以输入“.;C:\Program Files\Java\jdk1.5.0_06\lib\tools.jar; C:\Program Files\Java\jdk1.5.0_06\lib\rt.jar”(jar文件是zip压缩格式,其中包括.class文件和jar中的Classpath设置),每一路径中间必须以;作为分隔。
事实上JDK 5.0默认就会到当前工作目录(上面的。设置),以及
JDK的lib目录(这里假设是C:\Program Files\Java\jdk1.5.0_06\lib)中寻找Java程序。所以如果Java程序是在这两个目录中,则不必设置Classpath变量也可以找得到,将来如果Java程序不是放置在这两个目录时,则可以按上述设置Classpath。
如果所使用的JDK工具程序具有Classpath命令选项,则可以在执行工具程序时一并指定Classpath。例如:
javac -classpath classpath1;classpath2,其中classpath1、classpath 2是实际要指定的路径。也可以在命令符模式下执行以下的命令,直接设置环境变量,包括Classpath变量(这个设置在下次重新打开命令符模式时就不再有效):
set CLASSPATH=%CLASSPATH%;classpath1;classpath2,总而言之,设置Classpath的目的,在于告诉Java执行环境,在哪些目录下可以找到您所要执行的Java程序(.class文件)。
GNU Classpath是根据GNU通用公共许可证获得许可的,并提供链接例外,这是一项
自由软件许可证。所有代码正式归
自由软件基金会所有,而且该所有者受其对开发者的合同义务的约束。GNU Classpath被许多自由Java运行时使用,例如Kaffe、SableVM、JamVM、Jikes RVM和VMKit,因为每个全功能的Java虚拟机必须提供标准类库的实现。此外,它还被用于GNU Compiler for Java、GCJAppletViewer、IKVM.NET、JNode操作系统以及专门的
虚拟机如Jaos和JamaicaVM等。
由于标准Java API包含大量来omg.org的类,这些类通常根据由对象管理组发布的IDL文件生成,但这些文件的许可证被视为非自由的。因此,GNU Classpath项目中的这些类是从头开始编写的,仅使用官方印刷的OMG规范,确保GNU Classpath的这一部分与项目中的任何其他代码一样自由。
发展历程
GNU Classpath项目始于1998年,由五位开发者启动。在其发展过程中,它与多个具有类似目标的项目合并,如Kaffe和libgcj。GNU Classpath的名称由Bradley M. Kuhn提出,旨在暗示Java名称而不直接使用它,因为当时自由Java实现社区非常关注Sun对自由实现强制执行其Java商标。GNU Classpath没有正式的层级结构,所有代码更改首先作为补丁发布到讨论列表中,维护者负责项目的法律方面,准备定期发布并进行质量管理。GNU Classpath库的代码覆盖进度可以与
OpenJDK6和OpenJDK7进行跟踪。