Mit ProGuard auf meinem JAR-Dateien hat meine Anrufe zu class.getResource("")
gebrochen. Ich habe gesehen, dass Sie im ProGuard-Handbuch die -keepdirectories mypackage
(manual link) angeben müssen. Allerdings habe ich die Option -keepdirectories
angegeben und es scheint nicht zu funktionieren. Ich denke, mit meiner ProGuard Konfiguration ist etwas nicht in Ordnung. Ich habe auch this related question betrachtet, aber ich habe Probleme, die -keeppackagenames
funktioniert auch.Verwendung von getResource mit ProGuard führt zu null Ergebnis
In meinem Code habe ich etwas Ähnliches wie folgt.
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 Konfiguration
-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
die '/' auf 'keepdirectories' hat den Trick Hinzufügen! Ich habe dies als die richtige Antwort markiert. –
Vorsicht! Der angegebene Pfad darf nicht mit einem Schrägstrich enden: https://sourceforge.net/p/proguard/bugs/521/ – Gili