[英]Proguard output JAR file cannot be executed
我已经使用Proguard混淆了我的.JAR文件。 混淆后,JAR文件未执行。 在反编译混淆的代码时,我发现我的主要方法已重命名。
原始代码:
public static transient void main(String args[])
{
SwingUtilities.invokeLater(new Object() /* anonymous class not found */
class _anm1 {}
);
}
混淆代码:
public static transient void a(String as[])
{
SwingUtilities.invokeLater(new aa());
}
我没有选中混淆选项卡中的所有选项,但还是没有运气! 有什么帮助吗?
我没有测试过,但是我读到Proguard删除了未使用的类。 尝试这种方式-也许有帮助:
public static transient void main(String args[])
{
SwingUtilities.invokeLater(new Object() /* anonymous class not found */
class _anm1 {}
);
new _anm1();
}
我已经找到了解决方案(按命中和试用)
实际上,Progaurd的混淆方式是将所有方法重命名为a,b,c和更简单的名称。 对于包括主方法在内的所有方法,都会发生这种情况(如上所示)。 因此,从jar文件中提取(使用Winrar或类似实用程序)后,打开混淆的类(使用反编译器,我更喜欢Cavaj Decompiler)。 编辑文件并将主方法重命名回
public static void main(String[]args)
保存已编辑的类文件,它将另存为Java文件。 对其进行编译,然后将其放回JAR文件中(使用Winrar)。
现在执行类文件。 如果类文件不起作用,请编辑清单,因为混淆后会重命名类(有时是包),而这些更改不会反映在清单中。
这对我有用,请评论是否有人仍然遇到任何问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.