jar in jar loader中如何处理jar包中的jar包的加载

上一篇“如何将jar包中的jar文件添加到classpath中”里,讲了URLClassloader无法处理jar包中的jar,实际上就是无法处理“jar:file:/F:/share/ec2/test1.jar!/test.jar”这种类型的URL实际上是URL中嵌套了URL。那么jar in jar loader中的JarRsrcLoader是怎么处理这种情况的呢?很简单,JarRsrcLoader自己构造了一种URL协议rsrc,并且自己向URL注册了一个streamhandler,用来处理rsrc类型的协议处理。然后,使用这种协议格式来访问jar包中的jar或路径,之后照样构造一个URLClassLoader,此时URLClassLoader就可以处理jar中的jar了。

所以,URLClassLoader在认识了URL后,就可以正确处理jar中jar了。

你可能感兴趣的:(loader)