javac命令详解。
javac [options][sourcefiles][@files]
options命令行选项。
sourcefiles一个或多个要编译的源文件(例如:HelloWorld.java)
@files一个或者多个对源文件进行列表的文件
javac有两种方法可将源代码文件名传递给javac:如果源文件数量少,在命令行上列出文件名即可;如果源文件数量多,则将源文件名列在一个文件中,名称间用空格或回车行来进行分隔。然后在javac命令行中使用该文件名,文件名前冠以@字符。
源代码文件名称必须含有.java后缀,类文件名称必须含有.class后缀,源文件和类文件都必须由识别该类的根名。例如:名为MyClass的类将写在名为MyClass.java的源文件中,并被编译为字节码类文件MyClass.class。
内部类定义产生附加的类文件。这些类文件的名称将内部类和外部类的名称结合在一起,例如:MyClass$MyInnerClass.class。
应当将源文件安排在反映其包树结构的目录树中。例如:如果将所有的源文件放在/workspace中,那么com.mysoft.mypack.MyClass的代码应该在\workspace\com\mysoft\mypack\MyClass.java中。缺省情况下,编译器将每个类文件与其源文件放在同一个目录中。可用-d选项指定其他目标目录。
当编译源文件时,编译器常常需要它还没有识别出的类型的有关信息。对于源文件中使用、扩展或者实现的每个类或接口,编译器都需要其类型信息。这包括在源文件中没有明确提及,但是通过继承提供信息的类和接口。
例如:当扩展java.applet.Applet时还要用到Applet的祖先类。
当编译器需要编译类型信息时,它将查找定义类型的源文件或类文件。编译器先在自举类及扩展类中查找,然后在用户类路径中查找。用户类路径通过两种途径来定义:通过设置CLASSPATH环境变量或使用-classpath命令行选项。如果使用-sourcepath选择,则编译器在sourcepath指定的路径中查找源文件;否则,编译器将在用户类路径中查找类文件和源文件。可用-boothclasspath和-extdirs选项来指定不同的自举类或扩展类。
为缩短或简化javac命令,可以指定一个或多个每行包含一个文件名的文件。在命令行中,采用‘@’字符加上文件名的方法将它指定为文件列表。当javac遇到以‘@’字符开题的参数时,它对那个文件中所包含文件名的操作跟对命令行中文件名的操作时一样的。例如:名为sourcefiles的文件中列出所有源文件的名称,形如:
MyClass1.java
MyClass2.java
MyClass3.java
然后可用下列命令运行编译器:javac @sourcefiles
-classpath类路径
-d目录。设置类文件的目标目录。