0

哦,对不起,我的表达能力很差,我的意思是现在我已经创建了一个 URLClassLoader A,它的 URL[] 是 B,现在我需要动态加载和卸载 B 中的所有 jar。但我不知道该怎么做。

4

1 回答 1

0

类加载器可能是不可变的,这意味着您的代码不能更改主系统类加载器。这并不意味着您不能在主类加载器之上创建自己的第二个类加载器,但它确实意味着您可能无法在不重新启动 JVM 的情况下从系统类加载器中卸载类。我怀疑您的问题与此问题重复:我应该如何在运行时动态加载 Jars?. 这表明 OSGi 可能是答案:http ://www.osgi.org/Technology/WhatIsOSGi 。这是HelloWorld示例的链接。

如果您需要更简单的方法来卸载或添加类,您可以研究使用不同类路径重​​新启动 JVM 的方法。如果您在一个 JVM 中运行您的应用程序,并且您的应用程序与之对话的后台有第二个 JVM,那么您的主应用程序可能能够使用不同的类路径重新启动后台 JVM。只是一个想法。我不是这方面的专家,所以可能有更巧妙的方法来做这件事。

于 2012-11-06T21:16:48.387 回答