Użycie ProGuard w moich plikach jar spowodowało przerwanie moich połączeń z class.getResource("")
. Zauważyłem, że w podręczniku ProGuard trzeba podać -keepdirectories mypackage
(manual link). Jednak podałem opcję -keepdirectories
i wygląda na to, że nie działa. Myślę, że coś jest nie tak z moją konfiguracją ProGuard. Przyjrzałem się również this related question, ale mam problem z działaniem również -keeppackagenames
.Używanie getResource z ProGuard kończy się wynikiem zerowym
W moim kodzie mam coś podobnego do następującego.
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
}
}
Konfiguracja 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
Dodanie '/' na 'keepdirectories' załatwiło sprawę! Zaznaczam to jako poprawną odpowiedź. –
Uwaga! Podana ścieżka może nie kończyć się ukośnikiem: https://sourceforge.net/p/proguard/bugs/521/ – Gili