总结
1)当java类文件中存在语法或词法错误时,在编译过程中的第一步(解析文件)就会中断;
2)到了语法分析阶段,一处发现错误,并不会中断,即我们会看到多个出错的提示信息;
注意:有时候自动化提示出错脚本需要注意第一种情况的存在;
简单示例:类编译过程
[解析开始时间 HelloWorld.java]
[解析已完成时间 10ms]
[源文件的搜索路径: .,/home/luogw/dev-tool/jdk/jdk1.6.0_34/lib]
[类文件的搜索路径: /home/luogw/dev-tool/jdk/jdk1.6.0_34/jre/lib/resources.jar,/home/luogw/dev-tool/jdk/jdk1.6.0_34/jre/lib/rt.jar,/home/luogw/dev-tool/jdk/jdk1.6.0_34/jre/lib/sunrsasign.jar,/home/luogw/dev-tool/jdk/jdk1.6.0_34/jre/lib/jsse.jar,/home/luogw/dev-tool/jdk/jdk1.6.0_34/jre/lib/jce.jar,/home/luogw/dev-tool/jdk/jdk1.6.0_34/jre/lib/charsets.jar,/home/luogw/dev-tool/jdk/jdk1.6.0_34/jre/lib/modules/jdk.boot.jar,/home/luogw/dev-tool/jdk/jdk1.6.0_34/jre/classes,/home/luogw/dev-tool/jdk/jdk1.6.0_34/jre/lib/ext/localedata.jar,/home/luogw/dev-tool/jdk/jdk1.6.0_34/jre/lib/ext/dnsns.jar,/home/luogw/dev-tool/jdk/jdk1.6.0_34/jre/lib/ext/sunjce_provider.jar,/home/luogw/dev-tool/jdk/jdk1.6.0_34/jre/lib/ext/sunpkcs11.jar,.,/home/luogw/dev-tool/jdk/jdk1.6.0_34/lib]
[正在装入 java/lang/Object.class(java/lang:Object.class)]
[正在装入 java/lang/String.class(java/lang:String.class)]
[正在检查 HelloWorld]
[正在装入 java/lang/System.class(java/lang:System.class)]
[正在装入 java/io/PrintStream.class(java/io:PrintStream.class)]
[正在装入 java/io/FilterOutputStream.class(java/io:FilterOutputStream.class)]
[正在装入 java/io/OutputStream.class(java/io:OutputStream.class)]
[已写入 HelloWorld.class]
[总时间 101ms]
简单示例:存在语法错误的情况
luogw@ubuntu:~/temp$ javac -verbose HelloWorld.java
[解析开始时间 HelloWorld.java]
HelloWorld.java:3: 需要 ';'
int error
^
[解析已完成时间 13ms]
[总时间 25ms]
1 错误
简单示例:存在两处语义错误的情况
luogw@ubuntu:~/temp$ javac -verbose HelloWorld.java
[解析开始时间 HelloWorld.java]
[解析已完成时间 11ms]
[源文件的搜索路径: .,/home/luogw/dev-tool/jdk/jdk1.6.0_34/lib]
[类文件的搜索路径: /home/luogw/dev-tool/jdk/jdk1.6.0_34/jre/lib/resources.jar,/home/luogw/dev-tool/jdk/jdk1.6.0_34/jre/lib/rt.jar,/home/luogw/dev-tool/jdk/jdk1.6.0_34/jre/lib/sunrsasign.jar,/home/luogw/dev-tool/jdk/jdk1.6.0_34/jre/lib/jsse.jar,/home/luogw/dev-tool/jdk/jdk1.6.0_34/jre/lib/jce.jar,/home/luogw/dev-tool/jdk/jdk1.6.0_34/jre/lib/charsets.jar,/home/luogw/dev-tool/jdk/jdk1.6.0_34/jre/lib/modules/jdk.boot.jar,/home/luogw/dev-tool/jdk/jdk1.6.0_34/jre/classes,/home/luogw/dev-tool/jdk/jdk1.6.0_34/jre/lib/ext/localedata.jar,/home/luogw/dev-tool/jdk/jdk1.6.0_34/jre/lib/ext/dnsns.jar,/home/luogw/dev-tool/jdk/jdk1.6.0_34/jre/lib/ext/sunjce_provider.jar,/home/luogw/dev-tool/jdk/jdk1.6.0_34/jre/lib/ext/sunpkcs11.jar,.,/home/luogw/dev-tool/jdk/jdk1.6.0_34/lib]
[正在装入 java/lang/Object.class(java/lang:Object.class)]
[正在装入 java/lang/String.class(java/lang:String.class)]
[正在检查 HelloWorld]
[正在装入 java/lang/System.class(java/lang:System.class)]
[正在装入 java/io/PrintStream.class(java/io:PrintStream.class)]
[正在装入 java/io/FilterOutputStream.class(java/io:FilterOutputStream.class)]
[正在装入 java/io/OutputStream.class(java/io:OutputStream.class)]
HelloWorld.java:5: 找不到符号
符号: 方法 error1()
位置: 类 HelloWorld
new HelloWorld().error1();
^
HelloWorld.java:6: 找不到符号
符号: 方法 error2()
位置: 类 HelloWorld
new HelloWorld().error2();
^
[总时间 99ms]
2 错误