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"类型的属性值,所以谁在前面就先找谁,找到之后就不再向下寻找。