Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用Main方法混淆类名_Java_Proguard - Fatal编程技术网

Java 用Main方法混淆类名

Java 用Main方法混淆类名,java,proguard,Java,Proguard,我用它来混淆可执行文件.jar文件。当我使用带有main方法的类反编译代码时,它们仍然有它们的原始名称。这是由于 -keepclasseswithmembers public class * { public static void main(java.lang.String[]); } 在默认配置中 如果我删除这个,ProGuard将不会处理。有没有办法用main方法混淆类名,或者有充分的理由反对这样做?如果用main方法混淆类名,则不能再调用该类来运行jar 理论上,您可以修改ja

我用它来混淆可执行文件
.jar
文件。当我使用带有main方法的类反编译代码时,它们仍然有它们的原始名称。这是由于

-keepclasseswithmembers public class * {
    public static void main(java.lang.String[]);
}
在默认配置中


如果我删除这个,ProGuard将不会处理。有没有办法用main方法混淆类名,或者有充分的理由反对这样做?

如果用main方法混淆类名,则不能再调用该类来运行jar

理论上,您可以修改jar中的
MANIFEST.MF
,以引用模糊的类名,但我不确定这样做的好处,因为此时调用的内容非常清楚

此外,您永远不能混淆
main(String[])
方法名称本身,否则java根本无法找到并运行您的应用程序。这是一个很好的反对理由:)

如果希望混淆其余的类成员,但保留类名和main方法本身,可以使用

-keep public class mypackage.MyMain {
    public static void main(java.lang.String[]);
}
按照