首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

加载器之URLClassLoader

URLClassLoader:继承自SecureClassLoader,支持从jar文件文件夹中获取class,继承于classload,加载时首先去classload里判断是否由启动类加载加载过。...,jar都会比较大,所以最终采用依赖和项目代码进行分离的方案,将依赖jar放入lib文件下。...,以类似SpringBoot的方式去部署,但是思考之后我更倾向于能有一个统一的部署方案,对于后续新的应用也可以部署,于是就想到了URLClassLoader:将项目jar和lib下的依赖jar放入URLClassLoader...类的urls(存储加载的classes和resources)中,然后通过JarFile对项目jar进行遍历,找到程序的入口Main,然后使用URLClassLoader对类进行加载,最终启动它。... entry = jarFile.entries(); //Lib文件+项目Jar URL url = new URL("file:" + jar);

5.4K20
您找到你想要的搜索结果了吗?
是的
没有找到

SpringBoot如何加载jar包外面的配置文件

在开发springboot框架集成时,我遇到一个问题,就是如何让@PropertySource能够“扫描”和加载jar包外面的properties文件。...回到技术的本质,我希望基于spring容器,开发一个兼容性套件,能够扫描jar外部的properties文件,考虑到实施便捷性,我们约定这些properties文件总是位于jar文件的临近目录中。...设计前提 1、文件目录 文件目录就类似于下面的样式。可以看到配置文件是和jar包平行的。...其余application.jar同级;相对路径起始位置为jar路径。 2)首先查找./config/sample.properties文件是否存在,如果存在则加载。 3)查找..../sample.properties文件是否存在,如果存在则加载。 4)否则,使用classpath加载文件

1.6K20

SpringBoot如何加载jar包外面的配置文件

在开发springboot框架集成时,我遇到一个问题,就是如何让@PropertySource能够“扫描”和加载jar包外面的properties文件。...回到技术的本质,我希望基于spring容器,开发一个兼容性套件,能够扫描jar外部的properties文件,考虑到实施便捷性,我们约定这些properties文件总是位于jar文件的临近目录中。...设计前提 1、文件目录 文件目录就类似于下面的样式。可以看到配置文件是和jar包平行的。...其余application.jar同级;相对路径起始位置为jar路径。 2)首先查找./config/sample.properties文件是否存在,如果存在则加载。 3)查找..../sample.properties文件是否存在,如果存在则加载。 4)否则,使用classpath加载文件

1.8K20

【ClassLoader】实现自定义类加载加载指定路径下的Class文件Jar

文章目录 前言 自定义类加载加载.class文件 自定义类加载加载jar文件 前言 在web开发中,一般我们是不需要去自己实现类加载器的,常见的web容器已经帮我们实现了指定路径下的加载,比如我们熟悉的...tomcat容器,关于tomcat类加载机制可以阅读博主的这篇文章: Java类加载机制和Tmcat模型 有些时候我们需要实现自定义的类加载器来重定向我们的.class文件加载路径或者jar包里的打包的内容...自定义类加载加载.class文件 想要实现一个自定义的类加载器,首先要继承JDK中的ClassLoader类,如果我们要打破双亲委派模型,就去重写他的loadClass方法;如果我们想遵循双亲委派模型...这样我们的.class文件就已经加载完了,这个比较简单,下面我们来加载一下jar包,因为jar包是一个压缩文件,所以我们肯定要先解压缩后才能处理,这方面JDK为我们提供了一个JarFile的工具类,可以借助它来实现压缩的效果...自定义类加载加载jar文件 首先我们还是要继承ClassLoader这个类,去重写它的findClass方法,里面最关键的方法是jarFile.getJarEntry:获取一个Class对象,每个JarEntry

1.3K10

深入理解JVM(③)Java的模块化

模块化系统 可配置的封装隔离机制解决了原来类路径上跨文件的public类的可访问性的问题。public类型不再意味着所有地方代码都可以访问它们,导出和开放的类是不能够被外部使用。...只要放在类路径上的JAR文件,都会被当作传统的JAR包来对待;相应地,只要放在模块路径上的JAR文件,即使没有使用JMOD后缀,甚至不包含module-info.class文件,也仍然会被当作一个模块来对待...JAR文件在类路径的访问规则:所有类路径下的JAR文件及其他资源文件,都被视为自动打包在一个匿名模块(Unnamed Module)里,这个匿名模块几乎是没有任何隔离的,它可以看到和使用类路径上所有的包...JAR文件在模块路径的访问规则:如果把一个传统的、不包含模块定义的JAR文件放置到模块路径中,它就会变成一个自动模块(Automatic Module)。...其次,平台类加载器和应用类加载器都不再派生自java.net.URLClassLoader,如果有程序直接依赖了这种继承关系,或者依赖了URLClassLoader类特定方法,那代码很可能会在JDK9及更高版本的

1.1K30
领券