我想配置ProGuard作爲我的Gradle構建腳本的一部分,用於在Ubuntu中通過bash訪問Java應用程序,但我無法看到做對了。我以前從未使用過任何一種技術。使用ProGuard Manual我寫了下面的任務,我現在調用一個預先存在的jar文件,而我試着去做一些工作。在Gradle中使用Proguard - 找不到引用類java.lang.String
task obfuscate(type: proguard.gradle.ProGuardTask) {
injars 'build/libs/myapplication.jar'
outjars 'build/libs/myapplication_out.jar'
libraryjars '<java.home>/lib/rt.jar'
printmapping 'myapplication.map'
keep 'public class mypackage.MyMainClass { \
public static void main(java.lang.String[]); \
}'
}
我找回了很多線,說明缺少內置的Java庫文件如:
Warning: myclasses: can't find referenced class java.lang.String
在列表的底部,我還看到:
Could not call ProGuardTask.proguard()
如果我檢查我的輸出目錄,我可以看到它創建了目錄結構,但不是jar文件,這是我看到如果我用stacktrace運行我的gradle任務:
Caused by: org.gradle.api.GradleException: Could not call ProGuardTask.proguard() on task
我看了一下proguard故障排除頁面,它說我應該確保我指定了我的平臺的運行時庫,而對於JSE,這是lib/rt.jar。你可以看到在圖書館罐子裏的爭論。我錯過了什麼?
首先要弄清楚的是,'不能調用ProGuardTask.proguard()'來自Gradle或ProGuard。也許顯示完整的堆棧跟蹤。 '找不到引用類java.lang.String'聽起來像ProGuard沒有正確配置。 –