java - 是否有任何工具可以重新命名 Java 库及其引用?

标签 java

这肯定是一个很常见的问题。应用程序依赖于库 A 和库 B。库 A 依赖于库 C-v1(库 C 的版本 1),库 B 依赖于库 C-v2(库 C 的版本 2)中的一些新引入的功能。当然,C-v2 库进行了一些重大重构,这意味着它无法向后兼容 C-v1 库。但库 C-v1 和库 C-v2 具有相同的包名和类名。

现在,应该可以有效地“重新命名空间”库 C-v1。例如,名为 com.example.MyClass 的类可以重新命名为 old.com.example.MyClass。应该完全有可能构建一个自动化工具,该工具采用二进制 JAR 并以这种方式更改所有包名称。

还应该可以更改依赖库中的引用。例如,库 A 中对库 C 的任何引用都应更改为指向新的包名称。

肯定已经有一个工具可以做到这一点吗?

(PS:我确信一些聪明的人会提到 OSGi,但我想将其作为一次性 Activity )。

最佳答案

jarjar做你所要求的:

You can avoid problems where your library depends on a specific version of a library, which may conflict with the dependencies of another library.

库将重新打包到您的 jar 中并在此过程中重命名。它还包括一个 Ant-Task。

关于java - 是否有任何工具可以重新命名 Java 库及其引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9736130/

相关文章:

java - 什么是servlet处理中的 'error dispatch'?

java - 使用 JCIFS 的 Domino Java 代理 - 清理代理线程时出错

java - 作者优先于读者的并发对象

Java JCE 加密文件夹?

Java网络编程InetAddress对象

java - 使用 TimerTask 的黑莓 IllegalStateException 错误

java - 使用链接队列出列方法错误无法将对象转换为类

java - Spring boot API 接受 JSON(强制)和多部分文件(可选)

java - 使用 SWIG 的 Java 和 C++ 中的奇怪字符串行为

java - JDBC有没有办法检测列是否有默认值?