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

时间:2012-12-06 15:19:30

标签: java maven

我有来自外部来源的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

6 个答案:

答案 0 :(得分:20)

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

答案 1 :(得分:1)

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

它的主要用例是在你自己的jar中嵌入外部jar,为此,它可以重命名现有的包。它改变了必要的字节码。你或许可以调整它来做你想做的事。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

答案 4 :(得分:-1)

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

答案 5 :(得分:-1)

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