如何使用jarjar从默认包中重新打包.class文件?

时间:2011-11-18 12:16:48

标签: java package default jarjar

是否可以从默认包中移动jar中的.class文件 到另一个命名包,以便我可以导入和使用它们?

在这里浏览了其他问题后,我认为jarjar可能正是我想要的, 但我不知道如何使用它。

所以我的问题是如何使用jarjar将默认包中的.class文件重新打包到另一个命名包中?

编辑:我想澄清一些事情 - 我没有想要重新包装的罐子的来源, 所以我不知道如何重新编译代码。 混淆和反思是不可能的。

EDIT2:使用jarjar看起来非常简单:) java -jar jarjar.jar process rules.rules in.jar out.jar

rules.rules看起来像这样: 统治net.ylivay.src.a

问题解决了!

2 个答案:

答案 0 :(得分:1)

你需要重新编译然后更改包 - 只需移动jar(或外部)中的类文件对你没有帮助。

答案 1 :(得分:1)

要将类移动到另一个包中,您不仅需要更改它们在jar(或filesystem)目录结构中的位置,还需要更改源文件中的package声明,然后重新编译类

不应该尝试重新打包jar,你应该看看像Eclipse这样的IDE中提供的强大的重构工具,这使得这种事情变得简单。但是,既然你说(在你的问题的更新中)你没有源文件,那是不可能的。

另一种方法是创建代理类,使用反射调用默认包中所需的代理类。但这不仅令人不快,而且你说反思是不可能的。

所以你不能做你想做的事。