Java类加载机制——如何实现一个工程中不同模块加载不同版本的同名jar包。
2015-02-11 14:58
716 查看
如何实现一个工程中不同模块加载不同版本的同名jar包?
曾是阿里面试的时候遇到的一个面试题。当时就有点晕,如果是平时遇到这样的问题肯定是统一加载相同版本的就好了。
而如果系统特别庞大依赖冲突繁多,涉及多部门协调,真的有必要解决这样的问题。
这个问题困扰我很久,一直没有好的解决办法。最近研究java虚拟机。终于找到了答案。
在JVM里由类名和类加载器区别不同的Java类型。因此,JVM允许我们使用不同的加载器加载相同namespace的java类,而实际上这些相同namespace的java类可以是完全不同的类。
通常我们都使用默认的类加载器,所以同名类或者说同名jar包是唯一的,无法加载同名jar包的不同版本。而在JVM里不同的加载器是可以加载相同namespace的java类的。
曾是阿里面试的时候遇到的一个面试题。当时就有点晕,如果是平时遇到这样的问题肯定是统一加载相同版本的就好了。
而如果系统特别庞大依赖冲突繁多,涉及多部门协调,真的有必要解决这样的问题。
这个问题困扰我很久,一直没有好的解决办法。最近研究java虚拟机。终于找到了答案。
在JVM里由类名和类加载器区别不同的Java类型。因此,JVM允许我们使用不同的加载器加载相同namespace的java类,而实际上这些相同namespace的java类可以是完全不同的类。
通常我们都使用默认的类加载器,所以同名类或者说同名jar包是唯一的,无法加载同名jar包的不同版本。而在JVM里不同的加载器是可以加载相同namespace的java类的。
相关文章推荐
- Java基础之《加载器对同名不同版本jar包加载的选择》
- 如何把一个java工程打成一个jar包
- 如何把一个java工程打成一个jar包
- 如何把JAVA工程生成一个.JAR文件,而不是一堆JAR(ECLIPSE生成JAR)
- Java里如何实现一个方法在不同情况下“返回”不同的类型变量?
- RCP工程如何加入第三方jar包(与一般java application 不同!!!)
- 解决一个项目里面加载两个同名不同版本的DLL的问题
- 一个类如何实现两个接口中同名同参数不同返回值的函数
- 如何在一个工程里面实现不同的功能打入不同的日志文件中【log4net】
- 如何把JAVA工程生成一个.JAR文件,而不是一堆JAR(ECLIPSE生成JA
- 如何在Java运行的时候动态加载一个jar包到classpath里面
- Java 自定义 ClassLoader 实现隔离运行不同版本jar包的方式
- WebSocket不同版本的三种握手方式以及一个Netty实现JAVA类
- 如何把一个java工程打成一个jar包(转载)
- 如何用同一个工程创建两个不同版本的应用
- 如何用同一个工程创建两个不同版本的应用
- 如何将整个工程打成jar包,做一个可执行文件(java 命令)
- 一个类如何实现两个接口中同名同参数不同返回值的函数
- 如何在一个工程里面实现不同的功能打入不同的日志文件中【log4net】
- Java版本HTTPSQS 纯java实现、 一个jar包、支持嵌入式启动、完全兼容HTTPSQS、TPS 1w+