내 jar 파일에서 ProGuard를 사용하면 class.getResource("")
으로 전화가 끊어졌습니다. ProGuard 설명서에서 -keepdirectories mypackage
(manual link)을 지정해야한다는 것을 확인했습니다. 그러나 -keepdirectories
옵션을 지정했는데 작동하지 않는 것 같습니다. 내 ProGuard 구성에 문제가 있다고 생각합니다. 나는 또한 this related question을 보았지만 -keeppackagenames
도 잘 작동하지 못했습니다.ProGuard에서 getResource를 사용하면 결과가 null이됩니다.
제 코드에는 다음과 비슷한 내용이 있습니다.
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
는'/'keepdirectories'가 속임수를 썼는지'에 추가! 나는 이것을 정답으로 표시했다. –
주의! 지정된 경로는 슬래시로 끝날 수 없습니다. https://sourceforge.net/p/proguard/bugs/521/ – Gili