服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

javac--java编程语言编译器

synopsis[提要]

javac [options] [sourcefiles] [@files]

oldjavac [options] [soucefiles] [@files]

参数可疑位任意顺序

options

命令行选项

sourcefiles

一个或多个原文件

@files

一个或多个列有原文件列表的文件

description[
说明]

javac
工具读由java编程语言编写的类(class)和接口(interface)的定义,并将它们编译成字节代码的class文件

有两种将原文件名传递给javac的方法

文件
数量教少,可简单将文件名列在命令行上

文件
数量较多,文件名列在一个文件,文件名用空格(包括tab)或换行隔开.将该文件前加"@"字符,使用javac编译

文件必须有.java后缀名,(class)文件必须以.class为后缀名.文件和类文件必须有定位该类的根文件(,去掉后缀的文件).例如一个命名为myclass的的类,文件名应为myclass.java,该原文件将被编译成字节代码的名为myclass.class的类文件.

嵌套类(inner class)的定义将产生附加的类文件.这些类文件文件名由外部类名(outer class names)和嵌套类名合并而成例如, myclass$myinnerclass.class

你应该将原文件放置在能反应它们package tree的目录下.例如,如果你将所有的原文件放置在/workspace目录下,com.mysoft.mypack.myclass类的原文件( .java文件)应该为/workspace/com/mysoft/mypack/myclass.java

[
windows: 以上应为.例如你将所有的原文件放置在c:/workspace目录下,com.mysoft.mypack.myclass类的原文件应为c:/workspace/com/mysoft/mypack/myclass.java ]

缺省情况下,编译器将把类文件(.class文件)放置到和原文件(.java)相同的目录下.你可以通过使用-d选项指定目标目录(见选项的说明)

查找类型

当编译一个文件,编译器通常需要关于它暂时无法鉴别的类型的信息编译器需要每一个在文件中使用的,extenedimplemented的类或接口的类型信息它包括在文件中没有明显提级的,但是有可能通过继承来提供信息的类或接口.

例如当你继承java.applet.applet,你同时也使用了applet类的祖先:java.awt.panel,

java.awt.container,java.awt.component
java.awt.object.

当编译器需要类型信息时,它寻找定义了类型信息的原文件或类文件.编译器首先寻找boottrapextension(这些除非你使用编译器选项,否则不需要关心),接着查找用户的类路径,用户的类路径通过classpath环境变量或使用命令行选项-classpath来定义.(细节,请看*设置class path*),如果使用-sourcepath命令行选项,编译器将在该路径下查找原文件,否则编译器将在用户类路径下同时查找类文件和原文件你可以通过使用-bootclasspath-extdirs命令行选项来设置不同的bootstrapextension;见下面的cross-compilation options

一次成功的查找将找到一个类文件,文件或两者.下面是javac如何处理每一种情况

*
查找找到一个类文件(.class文件)但无原文件(.java文件): javac使用了类文件

*
查找找到一个原文件但无类文件javac将编译该原文件,然后使用生成的类文件

*
查找找到两者javac判断类文件是否过期.如果类文件过期,javac将重新编译原文件并将使用更新后的类文件.否则,javac将使用该类文件(没有过期)

缺省情况下,javac通过比较原文件和类文件的更改日期来判断类文件是否过期.( -xdepend选项提供了一个慢一些,但是更可靠的方法)

主意javac将默默(不输出信息):-)编译那些没有在命令行上指定的文件.使用-verbose选项可以来跟踪自动编译过程.

[filelist]文件
列表

为使javac的命令行短小或更简单,你可以指定一个或多个文件,这些文件每行含有一个文件.在命令行,在这些文件前使用'@'字符来指定它们是文件列表.javac遇到一个的名开头为"@",它将认为在该文件中的文件名为需要处理的文件的名子

例如你可以将所有的原文件列在一个名为sourcefile文件.这个文件可能如此:

myclass1.java

myclass2.java

myclass3.java

你可以通过

javac @sourcefiles

[ windows: c:/jdk1.4/bin/javac @sourcefiles]

编译myclass1.java,myclass2.java,myclass3.java

options[
选项]

javac
有一系列的标准选项,这些选项被当前开发环境所支持,并且将在以后的发行版中继续被支持.一些非标准的选项为专门为当前的虚拟机和编译实现.它们将在将来改变.(非标准选项以-x开头)

扫描关注微信公众号