Java™ 教程(管理源文件和类文件)

管理源文件和类文件

Java平台的许多实现依赖于分层文件系统来管理源文件和类文件,尽管Java语言规范不要求这样作,策略以下。java

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

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

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

.....\graphics\Rectangle.java

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

  • 类名 — graphics.Rectangle
  • 文件的路径名 — graphicsRectangle.java

你应该记得,按照惯例,公司使用其反向的互联网域名做为其包名,Example公司的互联网域名是example.comcom.example在它的全部包名以前,包名称的每一个组件对应一个子目录,所以,若是Example公司有一个包含Rectangle.java源文件的com.example.graphics包,它将包含在一系列子目录中,以下所示:code

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

编译源文件时,编译器会为其中定义的每种类型建立不一样的输出文件,输出文件的基本名称是类型的名称,其扩展名为.class,例如,若是源文件是这样的:接口

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

class Helper{
      . . . 
}

而后编译的文件将位于:get

<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,称为类路径,并使用CLASSPATH系统变量进行设置,编译器和JVM都经过将包名称添加到类路径来构造.class文件的路径,例如,若是域名

<path_two>\classes

是你的类路径,包名是:

com.example.graphics

那么编译器和JVM查找.class文件位于:

<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

上一篇:使用包成员

下一篇:什么是异常?

相关文章
相关标签/搜索