1

Eclipse Antスクリプトを使用して、ProGuardでjarファイルを難読化します。

この回答とほぼ同じ設定ファイルを使用しています。オプションを使用して適切なライブラリへの参照を追加し、を使用-libraryjarsして2つの警告を省略しました-dontnote

その後、生成されたjarをそれらのライブラリとともにfatjarに含めます。上記の.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

どうすれば修正できますか?この問題についてさらに調査する方法についてアドバイスをお願いします。

4

1 に答える 1

1

JD Java Decompilerを使用して難読化されたjarを検査することで、この特定の問題を解決することができました。

そこに一行:

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

名前が変更されたため、nullを返すNullPointerExceptionために発生しました。getResourceMyClass.class

于 2012-12-28T12:42:59.857 に答える