import与Java类搜索的关系

版权声明:转载请注名出处 https://blog.csdn.net/meism5/article/details/84193397

import与Java类搜索的关系

Java程序运行时要导入相应的类,也就是加载 .class 文件的过程。

假设有下面imoprt语句。

import mypackage.Fish;

该语句表明要导入mypackage包里面的Fish类。

系统环境变量:CLASSPATH设置的目的就是为了指明Java运行环境的类库(jar包)
JAVA_HOME=D:\jdk1.7.0_71
CLASSPATH =  .;%JAVA_HOME%\lib   等价于  .;D:\jdk1.7.0_71\lib

Java 运行环境将按顺序到下面的路径寻找并载入字节码文件Fish.class:

  • ./mypackage/Fish.class("."表示当前路径)
  • D:/jdk1.7.0_71/lib/*.jar!mypackage/Fish.class(D:/jdk1.7.0_71/lib/目录下的所有jar包里的mypackage目录下的Fish.class文件)


如果在第一个路径下找到了所需的类文件,则停止搜索,否则继续搜索后面的路径,如果在所有的路径下都未能找到所需的类文件,则编译或运行出错。
如Fish.java源文件,编译、运行

直接java Fish是会报错的,找不到Fish类

需要新建目录mypackage,把Fish.class文件放到mypackage目录下,执行指令
在当前目录执行java mypackage.Fish

此时起作用的classpath是.
.代表当前路径,当前路径为F:\javanav_demo
包路径为mypackage,所以Fish.class需要放到mypackage目录下不然找不到Fish.class文件


CLASSPATH变量中增加搜索路径,例如 .;%JAVA_HOME%\lib;C:\Users\dell\Desktop\sRes\javanav\demo,那么就可以将类文件放在C:\Users\dell\Desktop\sRes\javanav\demo 目录的mypackage包(绝对路径就是C:\Users\dell\Desktop\sRes\javanav\demo\mypackage\Fish.class)下,无论在什么路径,Java运行环境都可以通过import语句会找到。



C:\Users\dell\Desktop\sRes\javanav\other目录下的编译ClownFish.java文件时,也是可以通过import mypackage;找到Fish.class,从而编译通过的。这里起作用的classpath就是路径C:\Users\dell\Desktop\sRes\javanav\demo,也就是这么设置之后,无论在什么路径,都可以成功import mypackage.Fish

猜你喜欢

转载自blog.csdn.net/meism5/article/details/84193397