android開發中,debug調試是一種非常實用快速定位問題的辦法。eclipse中多工程依賴狀態下會偶現無法debug的困擾,debug中的代碼執行時會報出如下錯誤 The JAR of this class file belongs to container 'Android Dependencies' which does not allow modifications to source attachments on its entries 。
從字面意思理解即無法加載源碼,按照jar文件加載源碼的方法,依賴工程->properties->java build path ->libraries 找到被依賴工程的Jar文件,點擊source attachment。發現操作圖層右邊的所有選項全部置灰,所以這條路根本行不通。
查看被依賴工程的class path 文件,發現如果某個工程可以debug,那么<classpathentry kind="src" path="src"/> 一定在<classpathentry kind="src" path="src_gen"/> 的前面,因此修改這兩個配置屬性的位置,將<classpathentry kind="src" path="src"/>放在class path 屬性列表的最上邊,保存並clean工程,重新debug。問題解決,可以正常查看源碼。
原因:debug工具在多工程依賴時,查找源碼的方法是根據class path中配置的kind="src"的位置來尋找的,path="src_gen"和 path="src" 都是kind="src"類型的屬性值,所以誰在前面就先找誰,找到之后就不再向下尋找。