本帖最后由 帅哥哥 于 2014-5-6 14:20 编辑
现在越来越觉着学习Java的时候,不仅要有扎实的基本语法基本功,还要对编译器、虚拟机等东东有深入的了解了!!!
现在和大家分享一下Java编译器是怎么处理 import 语句的
Demo类中有下列语句:
- package com.abc.demoapp.demo;
- import com.abc.demoapp.person.Person;
复制代码
- 由于 Demo 类的 import 语句中声明 Person 类位于 com.abc.demoapp.person 包中,因此Java编译器先找到 classpath 根目录下的 com\abc\demoapp\person 目录下寻找 Person.class 文件,然后到 -sourcepath 选项指定的 src 根目录下的 com\abc\demoapp\person 目录下寻找 Person.java 文件。
- 如果同时找到了 Person.class 文件和 Person.java 文件,Java编译器就会根据 Person.java 文件的更新日期来判断 Person.class 文件有没有过期,如果过期就会重新编译 Person.java ,否则就直接使用 Person.class 。
- 如果只找到了 Person.class 文件,Java编译器就会直接使用这个 Person.class 。如果只找到了 Person.java 文件,Java编译器就编译这个 Person.java 。
- 如果既没有找到 Person.class 文件,也没有找到 Person.java 文件,就会抛出编译错误,提示无法解析 Demo 类中的 Person 符号。
|
|