手编辑一个jar子来改变包装名称

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

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

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


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

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

这是我的rules.txt文件的内容:

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

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

你应该看看Jar Jar Links 。 (我对这个名字没有任何回应:)。)

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

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

您可以使用ProGuard混淆器执行此操作。 它当然可以在包中移动代码并在字节代码级别运行。 它的主要目的是混淆,但首先应该首先考虑其中一个选项。

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

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