请教一个类加载及类覆盖的问题

冯立彬 冯立彬 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
在JDK1.5里面自带了JAXP1.3,可是在我们的应用中要使用到JAXP1.4,根据类加载的原理,如果相同的CLASSLOADER中存在已经加载了一个相同的类,这里指的相同的类就是类的绝对路径相同,就不会再加载另外相同的类了,这个时候即使把JAXP1.4放到我们的应用中,相同的类也是不会被JVM所加载,即此时JAXP1.4是不起作用的。
这个时候我采取了通过在应用中去加载JAXP1.4的方式,就是通过URLClassloader将其加载到相应的SystemClassLoader(即AppClassLoader)中,这个倒是可以把JAXP1.4加载进去,功能正常。将应用发布到Websphere中,发现JAXP被加载到了BootstrapClassLoader中(Why?),通过client应用,发现JAXP被加载到了AppClassLoader中,都可以正常使用。
我的问题是:这个时候JAXP1.4为什么通过被加载进去?覆盖原理是什么?另外就是为什么在WS中JAXP被加载到了BootstrapClassLoader中?先谢了。
以下是使用自定义加载的JAVA类:


public static void addJarFileToClasspath(File jarFile, boolean addMainfestClasspath) throws IOException, SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
List<URL> urls = new ArrayList<URL>(5);
urls.add(jarFile.toURI().toURL());

if (addMainfestClasspath) {
JarFile jf = new JarFile(jarFile);
Manifest mf = jf.getManifest();
if (mf != null) {
String cp = mf.getMainAttributes().getValue("class-path");
if (cp != null) {
for (String cpe : cp.split("//s+")) {
File lib = new File(jarFile.getParentFile(), cpe);
urls.add(lib.toURI().toURL());
}
}
}
jf.close();
}

URLClassLoader sysloader = (URLClassLoader) ClassLoader.getSystemClassLoader();
Class<? extends URLClassLoader> sysclass = URLClassLoader.class;

Method method = sysclass.getDeclaredMethod("addURL", URL.class);
method.setAccessible(true);
for (URL url : urls) {
method.invoke(sysloader, url);
}

}
...全文

相关推荐

当使用通配符来生成 JaCoCo 的覆盖率报告时,能够输出所有类的覆盖率,而当指定到具体类时,生成的 HTML 报告中该类的代码覆盖率为 0?如何解决??

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年实战经验大佬经验总结所得,可行方案供所需之人参考。

bug菌¹

政府科技管理者如何提升区域科技成果转化成功率?.docx

政府科技管理者如何提升区域科技成果转化成功率?

BIZKEEN

LangGraph与Graphviz集成:生成高质量静态图

内容概要:展示如何将LangGraph图导出为Graphviz DOT格式,生成PNG/SVG。通过自定义布局和样式,呈现清晰的流程图。对比Mermaid,讨论适用场景。 0533zbyy.com 0595ty.cn www.zh-casting.com yobest2.com 10cd.cn

2601_96960507

科技中介服务机构如何通过智能化工具快速识别高价值技术成果?.docx

科技中介服务机构如何通过智能化工具快速识别高价值技术成果?

BIZKEEN

基于静止坐标系解耦控制的电压源换流器有功无功动态性能仿真复现研究(Simulink仿真实现)

内容概要:本文围绕“基于静止坐标系解耦控制的电压源换流器有功无功动态性能仿真复现研究”展开,利用Simulink搭建完整的电力电子系统仿真模型,深入复现并分析电压源换流器(VSC)在静止αβ坐标系下的有功与无功功率独立控制策略。研究重点在于通过设计电流闭环控制器实现功率解耦,结合αβ坐标变换、功率反馈计算与解耦补偿环节,有效抑制有功与无功分量之间的动态耦合效应,提升系统在负载突变、电网扰动等非理想工况下的动态响应性能与运行稳定性。文章详细阐述了控制器结构设计、参数整定方法及仿真验证流程,通过动态波形分析验证了解耦控制策略的有效性,为新能源并网、微电网及柔性输电系统中换流器的高性能控制提供了可复现的技术路径与理论支撑。; 适合人群:具备电力电子、自动控制及电力系统基础知识,从事新能源发电、微电网控制、柔性直流输电等方向的研究生、科研人员及电力电子领域工程技术人员。; 使用场景及目标:① 掌握电压源换流器在静止坐标系下的建模与控制实现方法;② 深入理解有功无功功率解耦控制的原理与关键技术;③ 获取可用于科研复现、课程设计或工程预研的Simulink仿真模型与参数设计依据; 阅读建议:建议结合Simulink仿真模型同步操作,重点关注电流环控制器设计、解耦项补偿机制及动态响应波形分析,可进一步拓展至不同控制带宽、参数失配及多工况扰动下的对比研究,深化对系统稳定性和鲁棒性的理解。

李锦科研
评论 2
收藏 已收藏
分享
返回顶部
冯立彬
冯立彬 优质创作者: 编程框架技术领域 优质创作者: 编程框架技术领域
Java EE 67,535 成员 225,843 内容