如何从属于另一个jar的jar中删除文件



我需要从log4j-1.2.17.jar中删除JMSAppender类。这个jar包在我的名为xyz.jar的可执行jar中。删除JMSAappender类并使jar恢复原样最有效、最简单的方法是什么?

文件目录如下:

xyz.jar
|-BOOT-INF/lib/log4j-1.2.17.jar
|-META-INF
|-org

log4j-1.2.17.jar
|-org
|--apache
|| log4j-
|--------net
||--------JMSAppender.class
|-META-INF

jar文件与重命名为".jar"的zip存档没有什么不同。因此,任何删除或更改zip文件中某些内容的解决方案都是适用的,例如

  • https://superuser.com/questions/600385/remove-single-file-from-zip-archive-on-linux
  • 如何删除或替换zip存档中的文件

但是,如果jar带有签名,则可能会出现问题。在这种情况下,任何收件人都可以验证签名是否已损坏,这意味着文件已被篡改。要了解已签名的罐子,请阅读

  • https://docs.oracle.com/en/java/javase/14/docs/specs/man/jarsigner.html

最新更新