【问题标题】:How do I change the package name of classes inside a JAR? [duplicate]如何更改 JAR 中类的包名称? [复制]
【发布时间】:2015-05-01 13:08:22
【问题描述】:

典型问题 - 我有 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 一起使用而不会发生冲突。

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

我记得的事情:

  • Google Code 上托管的开源代码
  • 基于 ObjectWeb ASM 底层
  • 我认为这个名字可能是某种描述的双关语

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

【问题讨论】:

  • @Jesper 谢谢,这看起来真的很有用!我爱 Maven!
  • @ChetanKinger 我不认为它与您标记为重复的那个相同。那个只是关于更改包名称,而我的则是专门解决依赖地狱。此外,“手动编辑 Jar 以更改包名称”不是问题。
  • @Kidburla 您的问题标题为How do I change the package name of classes inside a JAR。您对自己的问题给出的答案是JarJar Links。我不明白一个问题与网站上的另一个问题问同样的问题并具有完全相同的答案是不是重复的?我们不能因为现有问题的措辞和内容达不到预期而提出新问题。
  • @ChetanKinger 我不认为它要求同样的事情。 “标题”是帖子的简短标题,而不是整个帖子本身。我可以将我的问题命名为“如何在 JAR 中重新打包依赖项,以便仅由其他依赖项使用的类不会导致与我的应用程序所需的更高版本的类路径冲突?”然而,这个标题有点太长了,不能成为 SO 上的最佳实践标题。不可避免地,当您缩短标题时,您将拥有两个相似(甚至相同,尽管此处不存在)的标题,它们实际上是在询问不同的内容。

标签: java jar java-bytecode-asm


【解决方案1】:

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

【讨论】:

  • 哇,你花了几毫秒才记住。如果您搜索过该网站,则无需首先发布问题。
  • @ChetanKinger 刚说完问题,我就想起了答案,所以我勾选了“分享你的知识,问答风格”复选框。
  • 尽管如此,它是重复的,您应该搜索该站点而不是创建自己的 wiki。这是当您谷歌“更改 jar 中的包名称”时出现的第一个答案。您的帖子没有任何价值。
  • @ChetanKinger 我确实搜索了该网站...这是我做的第一件事。
  • 您的搜索查询是什么?只是好奇。不要误会我的意思。
猜你喜欢
  • 2023-04-07
  • 2018-09-30
  • 2016-12-24
  • 2011-09-01
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 2014-11-08
  • 2023-03-24
相关资源
最近更新 更多