jar命令打包以及类加载

jar

jar打包命令

把当前目录中的Hello.class打到hello.jar这个jar包中

jar -cvf hello.jar Hello.class

把当前目录下的Hello.class 以及 World.class打到hello.jar这个jar包中

jar -cvf hello.jar Hello.class Word.class

把当前目录下的所有的class打到hello.jar这个jar包中

jar -cvf hello.jar *.class

把当前目录下的bin文件夹里面的所有文件打到这个jar包中,同时【包含】bin目录本身

jar -cvf hello.jar bin

把当前目录下的bin文件夹里面的所有文件打到这个jar包中,但是【不包含】bin目录本身

jar -cvf hello.jar -C bin .
#-C bin表示切换到bin目录下执行这个命令,注意bin后的那个点 (.)

把当前目录下的bin文件夹里面的所有文件打到这个jar包中,但是【不包含】bin目录本身,并且指 定程序入口类的全限定名

jar -cvfe hello.jar com.briup.test.Hello -C bin .

把当前目录下的bin文件夹里面的所有文件打到这个jar包中,但是【不包含】bin目录本身,并且同 时指定MANIFEST.MF文件中的内容

jar cvfm hello.jar myfile.txt -C bin .

myfile.txt文件内容为:

Main-Class: com.briup.test.Hello

#注意,最后一定要有一个空行
类加载器:

主要加载字节码文件

启动类加载器 bootstrapClassLoader,非java语言实现 作用:加载指定路径中jar里面的class文件 路径1:C:\Program Files\Java\jdk1.8.0_74\jre\lib\ 路径2:C:\Program Files\Java\jdk1.8.0_74\jre\classes\ ( 如果有这个目录的话) 例如:rt.jar

扩展类加载器 ExtClassLoader,java语言实现,是ClassLoader类型的对象 作用:加载指定路径中jar里面的class文件( 只能是jar中存在的class) 路径:C:\Program Files\Java\jdk1.8.0_74\jre\lib\ext\ 例如:ext中默认存在的jar,或者用户放到ext目录下的jar包

应用类加载器 AppClassLoader,java语言实现,是ClassLoader类型的对象 作用:加载指定路径中class文件或者jar里面的class文件 路径:CLASSPATH中配置路径,这个是用户自己配置的 例如:.:bin:hello.jar

我们最常使用的就是应用类加载器,因为它可以通过CLASSPATH中的路径,去加载程序员自己编写 并编译的class文件到内存中。我们也可以把自己最常用的jar包,放到ext目录中,让扩展类加载器去自动加载这个jar中的class文 件到内存中,这样我们的代码就可以直接使用到这个jar中的类了 但是其实,大多数情况下,即使我们需要用到其他jar中的代码,也一般会把jar所在的路径配置到 CLASSPATH中,让应用类加载器进行加载,这样会更加方便统一管理项目中使用的所有jar 关于启动类加载器,它不是java语言编写的,我们一般也不要去动它的路径或者jar,它是负责在 JVM启动的时候,把JRE环境中最重要的一些library加载到内存,一旦出问题,JVM就无法正常运 行。

双亲委托机制:自下而上委托,自上而下执行

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值