当使用javac编译源文件时,如何查找import导入的类

当编写一个java源代码文件时,此文件通常被称为编译单元(有时也被称为转移单元)。每个编译单元都必须有一个后缀名.java,而在编译单元内则可以有一个public类,该类的名称必须与文件名称一致。每个编译单元只能有一个public类,否则编译器就不会接收。如果在该编译单元之中还有额外的类,那么在包之外无法看见这些类,这是因为它们不是public类,而且它们主要用来为主public类提供支持。

 

java解释器的运行过程:

 

  1. 找出环境变量CLASSPATHCLASSPATH包含一个或多个目录,用作查找.class文件的根目录
  2. 从根目录开始,解析器获取包的名称并将每个句点替换成反斜杠,以从CLASSPATH根中产生一个路径名称。以cn.example.simple为例,它会转换成cn\example\simple
  3. 得到的路径会与CLASSPATH中的各个不同的项相连接,解析器就在这些目录中查找与你所要创建的类名称相关的.class文件

 

例子:

 

使用包名:cn.example.simple在该名称空间下,新建两个类:

 

 

package cn.example.simple;

public class Vector{
    public Vector(){
        System.out.println("cn.example.simple.Vector");
    }
}

 

package cn.example.simple;

public class List{
    public List(){
        System.out.println("cn.example.simple.List");
    }
}

将这两个文件置于目录:C:\DOC\JavaT中,设置CLASSPATH,如下:

  CLASSPATH=.;C:\DOC\JavaT

 一旦类路径确立,测试文件就可以放在任何目录下:

 

 

import cn.example.simple.*;

public class LibTest{
    public static void main(String[] args){
        Vector v = new Vector();
        List l = new List();
    }
}/*output:
cn.example.simple.Vector
cn.example.simple.List
*/

 

分析:

  当编译器碰到simple类库的import语句时,就开始在CLASSPATH所指的目录中查找,查找子目录cn\example\simple,然后从已编译的文件中找出名称相符.class文件。

 

注意:

 

无论何时创建包,都已经在给定的包名称的时候隐含地指定了目录结构。这个包必须位于其名称所指定的目录之中,而该目录必须是以CLASSPATH开始的目录中可以查询到。

 

编译过的代码通常放置与源代码的不同目录中,但是必须保证JVM使用CLASSPATH可以找到该路径。

 

 

 

 

 

转载于:https://www.cnblogs.com/aristole/p/8005910.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值