gpt4 book ai didi

java - 如何从不同位置动态加载 jar 到当前类加载器?

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:06:08 25 4
gpt4 key购买 nike

每当我在 tomcat 中部署 Web 应用程序时,WEB-INF/lib 中的所有 jar 都会加载到应用程序 ClassLoader 中。

我几乎没有其他位置有一些 jar ,比如 WEB-INF/ChildApp1/*.jar,WEB-INF/ChildApp2/*.jar.....根据用户请求,我想将一些 jar 集加载到当前类加载器中。

注意:我不想创建任何子类加载器。

我真正的要求是如何以编程方式将 jar 添加到当前类加载器中。

最佳答案

我做过一次,但这有点骇人听闻。请看下面的代码:

    final URLClassLoader sysloader = (URLClassLoader) ClassLoader.getSystemClassLoader();
final Class<URLClassLoader> sysclass = URLClassLoader.class;
// TODO some kind of a hack. Need to invent better solution.
final Method method = sysclass.getDeclaredMethod("addURL", new Class[] { URL.class });
method.setAccessible(true);
for (final File jar : jars) {
method.invoke(sysloader, new URL[] { jar.toURI().toURL() });
}

您需要将 ClassLoader.getSystemClassloader() 更改为您要使用的类加载器。您还必须检查这是否是 URLClassloader 的实例我认为有更好的解决方案,但这对我有用

关于java - 如何从不同位置动态加载 jar 到当前类加载器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39508646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com