Javac命令:
用于把源文件编译成二进制的字节码文件。即把*.java文件编译成*.class,*.java与*.class名字是一对一对应,即Test.java编译后的文件是Test.class。另外,内部类编译后的名字为OutClassName$InClassName.class。
语法:javac [options] [sourcefiles] [@argfiles]
- options:命令行参数。
- sourcefiles:一个或多个需要编译的源文件,源文件以空格隔开,并路径相对于当前工作目录。文件少的时候使用这种方式。这里可以使用通配符,如:com\sin90\*.java
- @argfiles:一个或多个包含命令行参数或源文件地址的文件,源文件地址也是相对于当前工作目录,源文件地址以空格或换行符隔开。如:Test.java com.sin90.New.java。文件多的时候使用这种方式。
Note :编译器在编译源文件的时候,可能需要引用其他的类或接口来完成编译。编译器搜索这些类或接口路径按以下顺序:boostrap-->extention classes-->user classpath(默认是类或接口文件所在目录)。
user classpath可以通过下面两种方式设定:
- 设置系统环境变量CLASSPATH:.;C:\java\jdk\lib\tools;any other paths;其中.;指的是类文件所在目录。
- 通过在命令行中设置-classpath或-cp参数,详细请看下面。
Note:编译器在搜索路径中搜索到的是*.java文件而非*.class文件,会自动地编译*.java再使用编译后的*.class,如果探索路径上有相同名字的*.java和*.class,会使用最新的那个文件。
标准的参数(Standard Options)
- -classpath classpath :设置一个或多个编译器搜索引用类的目录(也可以是*.jar 的类包),即类中package树型结构基于classpath 的路径,classpath以";"分隔。目录必须是存在的。
- -d directory :设置编译后生成的*.class文件放置的目录,该目录必须是存在的。编译器会根据class文件的package树型结构来放置文件。
- -deprecation:显示源文件中应用了已过时的成员(类、方法ect.)的信息。如果没有设置该参数,编译器只会显示使用了过时成员的源文件名字。-deprecation是-Xlint:deprecation的简短形式。
- -encoding encoding :设置源文件的字符编码。如UTF-8
- -g:开启调试信息显示。如果没有设置,默认显示源文件名称和代码所在行。
- -g:none :不显示任何调试信息。
- -help:显示javac命令的标准参数及其描述。
- -nowarn:不显示警告信息。该参数是Xlint:none的简短形式。
- -source release :设置使用哪个版本的JDK进行编译。值可以是:1.3、1.4、1.5、1.6?一般不用设置该参数。
- -sourcepath sourcepath :设置需要编译的源文件所在的目录、jar或zip等,即源文件的package的根。感觉这个参数跟classpath没什么区别。
- -verbose:输出详细的编译信息。
- -X:显示不标准的参数信息
非标准的参数(non-standard options)
略。详细请看官方javac的介绍
命令行参数文件(Command Line Argument Files)
命令行参数文件是为了在编译多个文件的时候,简化命令行。
一个命令行参数文件(简称:参数文件)可以包括参数(options)和源文件路径,这些参数或源文件路径在参数文件内以空格或换行符隔开。源文件路径是相对于当前工作目录,而不是相对参数文件所在的目录。
Artifice :参数文件可以看作是把命令行分别写在几个文件上一样,虽然会有些区别,如下面Note所示。
Note :在参数文件中不支持通配符*,和递归参数文件(即在参数文件中再次@参数文件),也不支持-J参数。
示例:
在C盘有一个文件options,内容如下:
-d classes -g -sourcepath \java\pubs\ws\1.3\src\share\classes
在C盘source文件夹内有一个classes文件,内容如下:
MyClass1.java MyClass2.java MyClass3.java
在doc命令窗口下输入:
C:\>javac @options @source\classes
那么该命令便会编译C盘下的MyClass1.java,MyClass2.java,MyClass3.java
java/javaw命令:
语法:
java [options] class [argument ...]
java [options] -jar file.jar [argument ...]
javaw [options] class [argument ...]
javaw [options] -jar file.jar [argument ...]
- options:命令行参数。
- class:需要运行的*.class文件,该文件要带main方法
- file.jar:需要运行的jar文件,只有带-jar参数时有效。jar文件的根要带有启动类MainClass类文件。
- argument:传递给启动类的一系列参数。
Artifice :运行时搜索类的顺序与编译时一致,同样是 boostrap-->extention classes-->user classpath
Note :java与javaw的区别是javaw没有相关联的控制台窗口,当运行javaw出错时,会弹出对话框。
标准参数(standard options)
非标准参数(non-standard options)