Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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 使用ProGuard后调用TargetException_Java_Ant_Obfuscation_Proguard_Executable Jar - Fatal编程技术网

Java 使用ProGuard后调用TargetException

Java 使用ProGuard后调用TargetException,java,ant,obfuscation,proguard,executable-jar,Java,Ant,Obfuscation,Proguard,Executable Jar,我使用EclipseAnt脚本将我的jar与ProGuard混淆 我使用的配置文件与此几乎相同。我刚刚使用-libraryjars选项添加了对适当库的更多引用,并使用-dontnote省略了两个警告 之后,我将生成的jar和这些库一起包含到胖jar中。如果使用了上面提到的.cfg,它可以正常工作 但并没有进行太多的混淆。据说在这方面使用 -keep public class mypackage.MyMain { public static void main(java.lang.Stri

我使用EclipseAnt脚本将我的jar与ProGuard混淆

我使用的配置文件与此几乎相同。我刚刚使用
-libraryjars
选项添加了对适当库的更多引用,并使用
-dontnote
省略了两个警告

之后,我将生成的jar和这些库一起包含到胖jar中。如果使用了上面提到的.cfg,它可以正常工作

但并没有进行太多的混淆。据说在这方面使用

-keep public class mypackage.MyMain {
    public static void main(java.lang.String[]);
}
所以这就改变了

-keep public class * {
    public protected *;
}
在重新生成新的fat jar后,它会引发异常:

    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

我怎样才能修好它?请给我一些建议,如何进一步调查这个问题。

我能够通过使用JD Java反编译器检查模糊的jar来解决这个特定问题

有一句话:

String path = JarEclipse.class.getResource("MyClass.class").toString();

这导致了
NullPointerException
,因为
getResource
返回null,因为
MyClass.class
被重命名。

我能够通过使用JD Java反编译器检查模糊的jar来解决这个特定问题

有一句话:

String path = JarEclipse.class.getResource("MyClass.class").toString();
这导致了
NullPointerException
,因为
getResource
返回null,因为
MyClass.class
已重命名