java的classpath环境变量学习心得

不同文件的类相互调用

第一种情况,main函数所在类不写import使用其他类

1、不需要import就能使用其他类有几种情况:

第一、被被调用类是调用类的内部类

第二、被调用的类与调用类在同一个文件编写

第三、被调用类与调用类在同一个包下面(如果类的顶部有package关键字,那么package后面的内容一样)。

第一和第二种情况不演示了

第三种情况:

目录结构:


A类的内容:


B类的内容:


直接在a文件所在目录下面编译运行


第二种情况,main函数所在类import其他类

1、如果一个类可以import其他类,要么系统默认的类加载器能够加载到该类,要么该类的路径在classpath中有定义。

第一种情况,在命令行编译时指定classpath

文件目录结构


A类的内容:


B类的内容:


直接在a目录同级目录下编译运行,并且指定编译后的文件输出位置为bin目录,前提输出位置的文件夹bin需要先创建好



注意一点:如果A类的全名是a.A那么java运行所在目录需要在a目录同级目录下,除非指定了classpath路径


总结一句话,如果不用import就调用某个类,那么该类必须和调用类在同一个包下面,如果不在同一个包下面就要使用import关键字导入,而且classpath下面一定要能找到被import的类,classpath指定路径的深度是类的全名一级域名所在的文件位置,javaboostrapExtClassLoader会默认的加载一些jre下面的类

下面讲一下classpath环境变量

1、classpath可以在编译的时候通过-classpat或者-cp来指定,也可以作为环境变量CLASSPATH来指定。

第一、CLASSPATH首先要写的是一个.,代表的是当前目录,如果是命令行运行那么就是命令行所在的目录,如果不加的话,java运行的时候会找不到.class文件

目录结构:


A和B里面没有任何import和package,其他内容和上面A、B文件一样


第二,如果在CLASSPATH下面指定了当前目录和类目录,那么import的类会先从当前目录下面去找,找不到在到其他CLASSPATH下面去找。

CLASSPATH内容:


bin下面的内容


A.java内容


忽略b这个目录没用


 直接在a目录下面编译运行A.java


能正常打印是因为CLASSPATH下面有B类的.class文件,如果把bin目录从CLASSPATH下面删掉那么编译和运行都会出问题

第三、可以把bin下的a文件夹打成一个jar包,然后编译运行时引用



第四、上面那种方式需要指定到具体哪一个jar,下面这种方式可以指定该目录下面所有的jar


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值