文档

Java™ 教程-Java Tutorials 中文版
管理源文件和类文件
Trail: Learning the Java Language
Lesson: Packages
Section: Creating and Using Packages

管理源文件和类文件

Java 平台的许多实现依赖于分层文件系统来管理源文件和类文件,尽管 The Java Language Specification 不需要这样做。策略如下。

将类,接口,枚举或注解类型的源代码放在文本文件中,该文件的名称是类型的简单名称,其扩展名为 .java。例如:

//in the Rectangle.java file 
package graphics;
public class Rectangle {
   ... 
}

然后,将源文件放在一个目录中,该目录的名称反映了该类型所属的包的名称:

.....\graphics\Rectangle.java

包成员的限定名称和文件的路径名是并行的,假定 Microsoft Windows 文件名分隔符为反斜杠(对于 UNIX,使用正斜杠)。

你应该记得,按照规范,公司使用其反向的互联网域名作为其包名。示例公司的 Internet 域名为 example.com,它的所有包名都以 com.example 开头。包名称的每个组件对应一个子目录。因此,如果 Example 公司有一个包含 Rectangle.java 源文件的 com.example.graphics 包,它将包含在一系列子目录中,如下所示:

....\com\example\graphics\Rectangle.java

编译源文件时,编译器会为其中定义的每种类型创建不同的输出文件。输出文件的基本名称是类型的名称,其扩展名为 .class。例如,如果源文件是这样的

//in the Rectangle.java file
package com.example.graphics;
public class Rectangle {
      . . . 
}

class Helper{
      . . . 
}

然后编译的文件将位于:

<path to the parent directory of the output files>\com\example\graphics\Rectangle.class
<path to the parent directory of the output files>\com\example\graphics\Helper.class

.java 源文件一样,已编译的 .class 文件应位于一系列反映包名称的目录中。但是,.class 文件的路径不必与 .java 源文件的路径相同。你可以单独排列源目录和类目录,如下所示:

<path_one>\sources\com\example\graphics\Rectangle.java

<path_two>\classes\com\example\graphics\Rectangle.class

通过这样做,你可以将 classes 目录提供给其他程序员而不会泄露你的源。你还需要以这种方式管理源文件和类文件,以便编译器和 Java 虚拟机(JVM)可以找到程序使用的所有类型。

classes 目录的完整路径 <path_two>\classes 称为 class path,并使用 CLASSPATH 系统变量设置。编译器和 JVM 都通过将包名称添加到类路径来构造 .class 文件的路径。例如,如果

<path_two>\classes

是你的类路径,包名是

com.example.graphics,

然后编译器和 JVM 在下述路径查找 .class files

<path_two>\classes\com\example\graphics.

类路径可能包含多个路径,由分号(Windows)或冒号(UNIX)分隔。默认情况下,编译器和 JVM 搜索当前目录和包含 Java 平台类的 JAR 文件,以便这些目录自动位于类路径中。

设置 CLASSPATH 系统变量

要显示当前的 CLASSPATH 变量,请在 Windows 和 UNIX(Bourne shell) 中使用以下命令:

In Windows:   C:\> set CLASSPATH
In UNIX:      % echo $CLASSPATH

要删除 CLASSPATH 变量的当前内容,请使用以下命令:

In Windows:   C:\> set CLASSPATH=
In UNIX:      % unset CLASSPATH; export CLASSPATH

要设置 CLASSPATH 变量,请使用以下命令(示例):

In Windows:   C:\> set CLASSPATH=C:\users\george\java\classes
In UNIX:      % CLASSPATH=/home/george/java/classes; export CLASSPATH

Previous page: Using Package Members
Next page: Summary of Creating and Using Packages