手编辑一个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源文件。 不仅包名称,还包括导入,以及任何可能的内联声明。 不值得。