如何更改 JAR 中 类 的包名称?

How do I change the package name of classes inside a JAR?

典型问题 - 我有 x-1.0.jarx-2.0.jary-1.0.jar。我想使用 x-2.0.jary-1.0.jary-1.0.jar 取决于 x-1.0.jar.

有一个工具允许您将依赖项捆绑到一个 JAR 中并在内部更改包名称以避免冲突。例如,如果 "x" 包含软件包 "com.foo" 中的软件,则它可以将 x-1.0.jar 中的所有 类 更改为软件包 "old.com.foo" 中的软件,以及任何y-1.0.jar 中的引用,因此我们可以制作一个新的 JAR xy-1.0.jar;这个 JAR 不会在 "com.foo" 包中包含任何公开暴露的 类,因此我们可以随意将它与 x-2.0.jar 一起使用而不会发生冲突。

问题是,我完全忘记了那个工具的名字!我们曾考虑在我的公司使用它一次,但我的管理层担心对 类 进行二进制级别的修改。但是现在(几年后)我们有一个类似的问题,只影响测试代码,所以我想再次提出。但是我完全忘记了名字!

我记得的事情:

有谁知道这可能是什么工具?请帮帮我!

我记住了!该工具称为 JarJar Links。