当前位置: 首页 > 面试题库 >

在Java中热交换jar文件

寿和通
2023-03-14
问题内容

我有两个jar文件。one.jar包含启动该过程的主要方法,其他two.jar仅包含类文件。

在One.jar中,我在其清单类路径中引用了two.jar。

One.jar包含使用Class.forName()动态加载类的机制

我想一生只部署一次One.jar。不会对其进行任何更改。

更改将仅在two.jar中发生

我想与更新的two.jar热插拔two.jar。我也看过其他有关热插拔的帖子,例如OSGi,ANT的hotswap,但没有任何帮助。

经过一番研究后发现,JRebel的确做得更好,但是我真的不知道如何将其与这些jar集成在一起?我坚持了将近2天。只需完成一些步骤即可完成此操作。有人帮我…这对我来说真的很重要…谢谢


问题答案:

嘿,我终于有了解决方案。我真的不知道我会提出这样一个简单的解决方案。我想到了@ThorbjørnRavn
Andersen的想法。我要做的就是首先获取jar文件的时间戳,然后使用URLClassLoader加载jar。如果jar文件的时间戳发生更改(即,当我用更新的jar替换jar时),那么我将使用close()丢弃旧的URLClassLoader对象,并再次使用URLClassLoader加载新的jar。每次我唯一需要检查的是jar的时间戳是否更改。希望这个答案也能帮助其他人。谢谢大家的支持。



 类似资料:
  • 在Intellij的调试会话中更新类和资源时出错。 热交换失败:[无论什么]原因。 当Intellij的热交换失败并且调试器没有更新有问题的代码时,会产生此错误。 如何解决这个问题?这样我就不必停止并再次启动调试过程。

  • 目前我有一个Weblogic 10R3开发的Java EE应用程序主机,我有兴趣测试1个消息驱动Bean。问题是我无法访问Bean正在侦听的外部JMS服务器,以下是MDB代码: 我的计划是,Bean将通过JNDI查找队列,并且我确实可以访问Weblogic托管服务器。因此,我可以删除外部JMS服务器,然后添加一个本地JMS队列和包含确切JNDI名称的connectionFactory。因此,隔离外

  • 我正在考虑为我的公司获得JRebel许可证。 然而,我刚刚发现IntelliJ已经有了一个内置的功能来热部署类。 欢迎所有反馈/经验/建议。

  • 我对IntelliJ相当陌生,我正在使用它开发一个将spring-boot作为后端服务器的AngularJS应用程序。当我对HTML或JavaScript代码进行任何更改时,我总是必须重新启动应用程序服务器。是否有提供HTML/JS/CSS文件热交换的配置或插件? 我使用的是IntelliJ Community Edition 2017.2.17、Angular 1.4.4、Node 4.2.1和

  • 我有一个关于在eclipse中使用maven在Weblogic上运行Java EE应用程序的基本问题。 我使用OEPE(Oracle Enterprise pack for Eclipse),它附带了一些插件,如m2e和wtp。据我所知,这些插件读取pom文件,并基于它们构建jar、war和ear文件。 我现在做的是这样的: 我选中build automatically选项,让这些插件创建我的EA