只是jarsigners hack的原始作者签入。我是由另一个与我最初共享该hack的开发人员指导的。
根据他对此的持续调查,您需要将以下内容添加到对hack的调用中
callNoArgMethod("getSigningData", jar);makeHardlink("signingDataRef", jar);callNoArgMethod("getManifest", jar);makeHardlink("manRef", jar, n);清单调用不是此帖子解决方案的一部分。他们是在创建接受测试以重现该问题时发现的。
基于此新信息,我们已更改了方法,现在使用反射来调用所有“ get”方法(如果尚未填充软引用,则必须首先调用get方法来填充软引用)
然后反省地发现CachedJarFile类中的所有软引用,并为其创建硬链接。
只要CachedJarFile保留在原位,而hack的基本前提仍然成立,这将在将来证明该解决方案不受其他内部重命名/重构的影响。(即:将软引用转换为硬引用。



