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就无法正常运 行。
双亲委托机制:自下而上委托,自上而下执行