我正在使用proguard優化jar,但優化後崩潰。 這裏是我的proguard的任務:java proguard:優化後庫不工作
<proguard>
-injars ${dist}/${jarname}
-outjars ${dist}-proguard/${jarname}
-target 5
-libraryjars '${java.home}/lib/rt.jar'
-dontobfuscate
-optimizationpasses 4
-overloadaggressively
-repackageclasses ''
-allowaccessmodification
-keep public class * {
public static void main(java.lang.String[]);
}
</proguard>
只要我把在-dontoptimize選項,它的工作原理。
根據訪問具有空指針的類的靜態公共成員時它崩潰的異常的堆棧。這裏是代碼:
public static Texture ring, dust, spikering, thinring, crystal, clouds;
public static void init() {
Field [] fields = TexturePool.class.getDeclaredFields();
for (Field field : fields) {
if(field.getType() == Texture.class) {
field.set(null, /*imagine new object here*/);
}
}
}
的感謝!
我真的不能相信訪問(檢索,或者你的意思是別的東西)的成員將拋出一個NullPointerException。你的意思是說成員可以被訪問,但它本身是空的,所以當試圖使用成員時拋出NullPointerException?如果是這樣,預期值從哪裏來? – jarnbjo 2009-11-08 19:28:43
謝謝,以及該成員初始化我訪問它之前調用的函數。 – clamp 2009-11-08 20:17:53
我問過這個問題,但你爲什麼不介意告訴我們_exactly_出錯了? NullPointerException的原因是什麼?訪問成員時發生一些VM內部錯誤(因爲您的帖子似乎暗示)或者僅僅是成員爲空,所以當您嘗試訪問成員實例時會引發NullPointerException? – jarnbjo 2009-11-08 21:48:41