问题描述
请问importjava.util.*这句代码的实现机制是什么?是不是JVM找到操作系统的是path环境变量,然后找到C:ProgramFilesJavajre6librt.jar然后JVMClassLoader?是这个过程吗?请高手给予解释一下,(*^__^*)嘻嘻……
解决方案
解决方案二:
编译的时候根据classpath找。
解决方案三:
import是给编译器看的,不涉及jvm
解决方案四:
引用2楼zangxt的回复:
import是给编译器看的,不涉及jvm
编译的时候是没有疑问,可是执行的时候编译器就没关系了吧,总得JVM执行吧?那应该是寻找的path环境变量吧?我看我这环境变量不少呢,什么java,oracle,python的。应该都是这么个原理吧?嘿嘿~~~
解决方案五:
关注。。
解决方案六:
编译之后的class文件里用的是类的全路径名,跟import无关了。jvm根据全路径名去寻找class文件或者jar包,至于如何寻找的,要区分不同的类加载器了。
解决方案七:
引用2楼zangxt的回复:
import是给编译器看的,不涉及jvm
就是这样引用3楼lqy19830929的回复:
编译的时候是没有疑问,可是执行的时候编译器就没关系了吧,总得JVM执行吧?那应该是寻找的path环境变量吧?我看我这环境变量不少呢,什么java,oracle,python的。应该都是这么个原理吧?嘿嘿~~~
你不import,VM照样找rt.jar.importjava.util.*的意思是如果你输入Listx,编译器会找到java.util.List.执行时就已经是全名了.
解决方案八:
path是你在命令提示符下使用时它去找你个java执行文件,classpath是编译器面对import时它并不知道你导入的类在那它就会去classpath下面寻找。
解决方案九:
引用3楼lqy19830929的回复:
编译的时候是没有疑问,可是执行的时候编译器就没关系了吧,总得JVM执行吧?那应该是寻找的path环境变量吧?我看我这环境变量不少呢,什么java,oracle,python的。应该都是这么个原理吧?嘿嘿~~~
compiler把java文件编译成字节码后,跟类有关的东西都加上了完整的路径,通过javap-c命令反汇编*.class文件,可以得知
解决方案十:
楼上说的挺详细的.
解决方案十一:
其实不需要懂只要知道用法就行了importjava.util.*;是在应用JAVA里面别人写好的util类里所有的方法就可以了!!
解决方案十二:
mark
解决方案十三:
不懂???