我正在编写一个服务器程序,该程序用于运行API的单元测试 (显示大量信息并提供Web访问以控制/监视整个事情)…
服务器在编译时 会 知道 该API,并以JAR的形式提供。
为了能够在 不同版本
的API的单元测试结果之间进行比较(而无需重新启动服务器),我希望能够卸载“当前”版本的API,并重新加载较新的版本(或较旧的版本) 。
我不想使用URLClassLoader并按名称调用每个方法
(使用 getDeclaredMethod("someMethod")
),
因为服务器严重依赖于API,以这种肮脏的方式“包装”每个方法调用会很复杂。
我在想:既然所有接口 全部 的JAR的版本是 相同的
,我不能用某种方式重新加载JAR的其他版本做到这一点(不通过名称管理invokation?)。
注意:我正在使用最新的Java SE(6)和Java EE(5)。
如果您认为我无法实现的目标,请提出“解决方法”或其他概念。
我认为如果您使用
Class.forName(clsname, init, classloader);
(此处为Javadoc),您将获得给定类加载器提供的类的实例。由于该类而加载的所有内容也将通过相同的类加载器进行加载。
只要您对从此刻起实例化的对象非常谨慎(以允许使用GC),您就应该能够重新加载不同的版本。我以前使用Java
1.3进行过一次调试,但是它花费了大量的调试时间,但是最后我有了一个“
bootstrap”应用程序,该应用程序Runnable
按名称加载了一个类,并且能够通过针对另一个实例化一个新的类加载器来“软重启” URL并再次输入。
我的Mac上目前有Java8(1.8.0_261),我和IntelliJ一起使用。但是我的学院需要最新的java,所以我今天安装了Java14.0.1。我如何从我的Mac上卸载Java8,因为我不再需要它了。谢谢你花时间读这篇文章。
问题内容: 在开发Python代码时,通常会在解释器中以即席方式对其进行测试。我将对其进行测试,找到一个错误,修复该错误并保存,然后使用内置函数进行再次测试。 但是,假设我有,并且在测试时发现了一个错误并进行了修复。现在调用不会递归地重新导入。我必须手动重新导入依赖项(通过执行类似,或的操作,或者,如果我更改了一大堆依赖项并丢失了需要重新加载的内容的信息,则需要重新启动整个解释器。 更为方便的是,
问题内容: 我正在编写一个具有静态外部“外壳”和动态内容部分的Web应用程序。用户浏览系统时,动态内容部分具有许多更新。加载新的内容块时,还可以选择加载另一个JavaScript文件。我以良好的内务管理名义,从DOM中删除了适用于旧内容块的脚本块,因为不再需要JavaScript。 接下来是问题,当我意识到尽管我已经从DOM中删除了该元素,但是先前评估过的JavaScript仍然可以执行。这当然是
我怎样才能把它完全移除并重新安装一个新的?
我试图在我的bash脚本中从Sourceforge下载最新版本的graphicsmagick 问题是当我试图提取tar.gz我得到以下错误 这意味着脚本不是在下载最新的tar.gz而是下载另一种文件类型? 为什么会这样,我错过了什么?
我想下载旧版本的Android SDK:21.0.0,在哪里可以下载? 我目前有最新版本的android SDK,从这里下载。 然而,我想要一个旧版本,完整的旧版本的SDK可以从任何地方下载吗? 我正在尝试使用SDK管理器获取旧版本,但它不起作用。一、 它只给我构建工具等。