gpt4 book ai didi

java - 如何在现有的jar中注入(inject)编译类?

转载 作者:行者123 更新时间:2023-12-01 19:19:01 26 4
gpt4 key购买 nike

我需要修补生产中的系统,但是我已经更改了 CVS 中的主干。由于有很多更改,我不想将代码恢复到以前的版本,因为只涉及一个类。

这可以做到吗?

  1. 停止应用程序。
  2. 将已编辑的 *.class 安全地替换到现有 jar 中。
  3. 重新启动应用程序。

非常感谢

最佳答案

除非 jar 是由其他人签名的,否则这是可以完成的。毕竟 Jar 文件只是 zip 文件,您解压缩它们,替换文件并再次压缩它们。如果 jar 已签名并且您拥有 key ,则必须再次对新 jar 进行签名。 (jar 命令是执行此操作的首选方法。)

但是这样做是非常糟糕的做法。相信我,如果这种部署方式成为一种习惯,那么您现在节省的工作量将损失成百倍。除非出现真正的危机(例如,您的应用程序甚至无法运行或每十分钟崩溃一次),否则您永远不应该这样做。

如果您使用 CVS,您应该始终标记您的版本,但即使您没有这样做,您也可以检查发布日期的主干,从那里创建一个分支,将更改应用到分支并重建您的应用程序。

大约需要十分钟(加上编译时间),这是一种安全且正确的方法。您可以在测试环境中启动修补后的应用程序,测试它是否有效,然后再进行部署。

在现有应用程序中删除预编译的类文件可能会以微妙的方式破坏代码,而这种破坏要到几天后才会显现出来。重新编译和重新测试应用程序可以消除这种风险,只留下与任何代码更改相关的小得多的风险。

关于java - 如何在现有的jar中注入(inject)编译类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5279446/

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