在NetBeans Mobility項目中,我已將一個zip文件附加到Resources文件夾中,該zip文件包含大約10個.class文件。已編譯的Jar文件包含多餘的類文件
在我的移動應用程序中,我實際上使用了zip文件中的4個類,但是當我編譯和構建我的項目時,目標jar文件似乎包含zip文件中的所有10個.class文件。
我知道只有應用程序使用的類文件被編譯到最終的jar文件中。 可能會出現什麼問題?
在NetBeans Mobility項目中,我已將一個zip文件附加到Resources文件夾中,該zip文件包含大約10個.class文件。已編譯的Jar文件包含多餘的類文件
在我的移動應用程序中,我實際上使用了zip文件中的4個類,但是當我編譯和構建我的項目時,目標jar文件似乎包含zip文件中的所有10個.class文件。
我知道只有應用程序使用的類文件被編譯到最終的jar文件中。 可能會出現什麼問題?
嘗試在jar上使用proguard來自動刪除您的midlet類未使用的類。
我將混淆級別設置爲max,並且jar文件現在已經減少到其原始大小的一半,甚至更少的類文件顯示到最終的jar中。 但我不明白爲什麼我使用的類沒有考慮到最終的jar。 – 2009-08-18 19:19:13
Proguard在混淆和縮小過程中重命名類。如果您想保留類名,請在混淆時使用keepattributes標誌。有關各種選項,請參閱Proguard文檔 – Ram 2009-08-20 12:52:44
我認爲你對netbeans會對附加資源文件做什麼做出錯誤的假設。它不會自動找出你正在使用哪些,哪些不是。雖然可能有第三方工具來幫助。
Netbeans如何知道您正在使用哪個類?衆所周知,你可能會反射性地訪問它們。 – 2009-08-18 18:44:32
編譯器是否知道我正在使用所需的類文件,並且不能將它包含在最終的jar文件中,我正在從jar文件大小的角度進行討論。 例如,如果我將一個zip或jar附加到包含100個.class文件的資源目錄,那麼所有的100個數字都會放入最終編譯的jar文件中。 – 2009-08-18 18:53:58
是的,他們會的。但是如果你對反思沒有做任何有趣的事情,izb的答案應該很好地工作。 – 2009-08-18 19:15:48