手动编辑 jar 以更改包名称

  • 本文关键字:包名 编辑 jar java maven
  • 更新时间 :
  • 英文 :


我有一个来自外部来源的jar文件。jar 中的所有类都在 com.xyz 包中。

我想将所有类移动到 com.xyzold 包中。

这很简单,就像解压缩 jar,将 xzy 文件夹重命名为 xyzold 并重新压缩它一样,还是我还需要修改每个类文件?


这是我的解决方案,使用 Jar Jar 链接

java -jar jarjar-1.4.jar process rules.txt google-collections-1.0.jar google-collections-old-1.0.jar

这是我的规则.txt文件的内容:

rule com.google.** com.googleold.@1

您可以使用 Jar Jar 链接来实现这一点。此外,您不需要要修改的类的源代码,因为程序在字节码级别执行此操作(即,它直接修改.class文件)。

您可以使用Maven阴影插件在Maven构建中执行此操作。

你应该看看Jar Jar Links。(我不对这个名字负责:)。

它的主要用例是在您自己的 jar 中嵌入外部 jar,为此,它可以重命名现有包。它更改必要的字节码。您也许可以调整它以执行所需的操作。

你可以用ProGuard混淆器来做到这一点。它当然可以在包中移动代码,并在字节码级别运行。它的主要目的是混淆,因此当然应该首先考虑其他选项之一。

不,您需要修改jar文件中的所有类。您需要有一个源代码才能更改包。

您还需要修改所有 Java 源文件。不仅是包名称,还有导入,以及任何可能的内联声明。真的不值得。

最新更新