【发布时间】:2013-06-14 15:14:18
【问题描述】:
在我的 jar 文件上使用 ProGuard 中断了我对 class.getResource("") 的调用。我在 ProGuard 手册中看到您需要指定 -keepdirectories mypackage (manual link)。但是,我已经指定了-keepdirectories 选项,但它似乎不起作用。我认为我的 ProGuard 配置有问题。我还查看了this related question,但我无法让-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
【问题讨论】: