首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ProGuard后的InvocationTargetException

使用ProGuard后的InvocationTargetException
EN

Stack Overflow用户
提问于 2012-12-28 14:30:22
回答 1查看 1.1K关注 0票数 1

我使用Eclipse Ant脚本用ProGuard混淆了我的jar。

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

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

但是并没有做太多的混淆。在examples for typical application中,据说使用

代码语言:javascript
复制
-keep public class mypackage.MyMain {
    public static void main(java.lang.String[]);
}

所以这是改变的

代码语言:javascript
复制
-keep public class * {
    public protected *;
}

在重新生成新的fat jar之后,它抛出异常:

代码语言:javascript
复制
    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

我怎么才能修复它?请给我一些建议如何在这个问题上进行更多的调查。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-28 20:43:00

我能够通过使用JD Java Decompiler检查混淆的jar来解决这个特定的问题。

在那里有一行:

代码语言:javascript
复制
String path = JarEclipse.class.getResource("MyClass.class").toString();

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14065563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档