7

jar ファイルで ProGuard を使用すると、 への呼び出しが壊れましたclass.getResource("")-keepdirectories mypackageProGuard のマニュアルで、 (マニュアル リンク)を指定する必要があることを確認しました。ただし、-keepdirectoriesオプションを指定しましたが、機能していないようです。ProGuard の設定に何か問題があると思います。この関連する質問も見ましたが-keeppackagenames、うまく動作しません。

私のコードでは、次のようなものがあります。

package com.example.mypackage;
public class MyClass{
    public static void main(String [] args){
        //url is always returned as null
        URL url = MyClass.class.getResource("");
        //do additional stuff including retrieving manifest file
    }
}

ProGuard の構成

-injars ...
-outjars ...
-libraryjars ...

-dontoptimize
-keepattributes SourceFile,LineNumber,Table,LocalVariable*Table,*Annotation*
-renamesourcefileattribute SourceFile

-repackageclasses
-overloadaggressively

-keep public class com.example.mypackage.MyClass{
    public static void main(java.lang.String[]);
}
-keepdirectories com.example.mypackage,com.example.mypackage.MyClass
-keeppackagenames com.example.mypackage,com.example.mypackage.MyClass
4

2 に答える 2

6

ProGuard は、パッケージ名にドット、ファイル名とディレクトリ名にスラッシュを想定しています。

-keeppackagenames com.example.mypackage
-keepdirectories  com/example/mypackage
于 2013-06-20T00:55:17.787 に答える
0

次の変更を加えて動作させることができたことがわかりました-keepdirectories

-keepdirectories **mypackage**

ただし、これはちょっとぎこちなく感じます。機能している間は、もっと良い解決策があるように感じます。

于 2013-06-14T20:46:07.830 に答える