我使用 Eclipse Ant 脚本用 ProGuard 混淆了我的 jar。
我使用的配置文件与这个答案几乎相同。我刚刚使用-libraryjars
选项添加了对正确库的更多引用,并使用省略了两个警告-dontnote
之后,我将生成的 jar 包含到带有这些库的胖 jar 中。如果使用上面提到的 .cfg 就可以了。
但是没有做太多的混淆。在典型应用的示例中,据说使用
-keep public class mypackage.MyMain {
public static void main(java.lang.String[]);
}
所以这被改变了
-keep public class * {
public protected *;
}
重新生成新的胖罐后,它会抛出异常:
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoa
der.java:58)
Caused by: java.lang.NullPointerException
at mypackage.a.d.a.a(SourceFile:11)
at mypackage.a.d.a.a(SourceFile:44)
at mypackage.MyMain.main(SourceFile:61)
... 5 more
我该如何解决?请给我一些建议,如何对这个问题进行更多调查。