YLi*_*vay 5 java default package jarjar
是否可以将 jar 中的 .class 文件从默认包移动到另一个命名包,以便我可以导入和使用它们?
在这里浏览其他问题后,我认为 jarjar 可能正是我要找的,但我不知道如何使用它。
所以我的问题是如何使用 jarjar 将 .class 文件从默认包重新打包到另一个命名包?
编辑:我想澄清一些事情 - 我没有要重新打包的 jar 的来源,所以我不知道如何重新编译代码。混淆和反射是不可能的。
EDIT2:使用 jarjar 似乎非常简单:) java -jar jarjar.jar process rules.rules in.jar out.jar
rules.rules 看起来像这样: rule a net.ylivay.src.a
问题解决了!
要将类移动到不同的包中,您不仅需要更改它们在 jar(或文件系统)目录结构中的位置,还需要更改package源文件中的声明,然后重新编译类。
您或许应该看看 Eclipse 等 IDE 中提供的强大重构工具,而不是尝试重新打包 jar,这使得此类事情变得简单。但既然你说(在更新你的问题时)你没有源文件,那是不可能的。
另一种方法是创建代理类,使用反射调用默认包中所需的代理类。但这不仅令人不快,而且你说反思是不可能的。
所以你不能做你想做的事。
| 归档时间: |
|
| 查看次数: |
2452 次 |
| 最近记录: |