1、javac是什么
javac即Java编程语言编译器,位于jdk/bin目录下,读取使用Java编程语言编写的源文件(.java),并编译成字节码类文件(.class)。编译器会一并编译源代码中的注解(annotations),但是会移除注释。
了解注解注释看这里:[注解、注释有什么区别][2]
javac还可以隐式编译一些没有在命令行中提及的源文件。当编译源文件时,编译器常常需要它还没有识别出的类型的有关信息。对于源文件中使用、扩展或实现的每个类或接口,编译器都需要其类型信息。这包括在源文件中没有明确提及、但通过继承提供信息的类和接口。
了解继承看这里:java类的继承有什么意义
2、javac如何使用
javac工具可以再安装了jdk的操作系统中执行。了解如何安装jdk看这里:如何安装和配置Jdk
打开操作系统的命令终端,输入相应的命令行,就能够使用javac,具体语法如下:
javac [ options ] [ sourcefiles ] [ @files ]
其中,参数可按任意次序排列。参数说明如下:
options
命令行选项,直接执行javac或者javac -help会显示所有options操作,主要有:
- -classpath
类路径,设置用户类的路径,它会覆盖CLASSPATH环境变量中的用户类路径。若既未指定CLASSPATH又未指定-classpath,则用户类路径由当前目录构成。多个路径项用分号”;”进行分隔。
- -sourcepath
源路径,指定用来查找类、接口定义的源代码路径。它们可以是目录、jar或zip。要注意的是通过类路径查找,如果找到了其源文件,则会自动被重新编译。与用户类路径一样,多个源路径项用分号”;”进行分隔。
如果使用包,那么目录或归档文件中的本地路径名必须反映包名。例如要引入package是com.test的源文件(com在src文件夹中),则需要指定com上一级目录:
javac -sourcepath src Test.java
- -d
指定存放生成的类文件的位置,若不指定,则类文件会放在源文件目录。需要指定已有的目录,不能自动创建文件夹。
- -encoding
设置源文件编码,例如utf-8。若未指定-encoding选项,则使用平台缺省的编码。
- -g
生成所有的调试信息,包括局部变量。缺省情况下,只生成行号和源文件信息。
- -g:none
不生成任何调试信息。
- -verbose
输出有关编译器正在执行的操作的消息。它包括了每个所加载的类和每个所编译的源文件的有关信息。
- -version
打印javac版本信息,该版本即jdk的版本。
sourcefiles、@files
一个或多个要编译的源文件。
- 编译一个文件,直接写源文件名,例如:
执行:javac Test.java,生成编译文件Test.class。
- 编译多个文件,需要创建一个新文件(没有后缀名),写入需要编译的源文件,然后加上前缀@。例如:
新文件:javaList,其内容:
Test1.java
Test2.java
Test3.java
执行:javac @javaList,生成编译文件Test1.class、Test2.class、Test3.class。
3、如何通过代码执行javac
对于javac,我们不但可以在操作系统中直接执行,它也提供了若干API,可以使用这些API通过编写代码来完成编译。
具体看这里:[如何使用javacAPI通过代码编译源文件][5]