在Android R18更新后,从调试视图打开源代码编辑.class

时间:2012-07-11 21:06:55

标签: java android eclipse debugging

当我在Eclipse中调试我的代码时,当我打开编辑器发现我无法编辑它时,我感到恼火,因为我实际上正在查看.class文件的源代码。在调试模式下,如何让Eclipse打开.java文件而不是.class文件?

编辑:当我在我的代码中遇到断点时,它将我带到MyFile.class而不是MyFile.java,所以我可以看到我的代码但不是编辑它。

编辑:我猜它与Android和ADT R18有一些关系

4 个答案:

答案 0 :(得分:52)

在我终于找到一些时间和充分的理由来深入研究这个问题后,我将详细阐述Thornbjorn的答案。

最近,Google改变了您的Android项目打包外部Android库的方式。在ADT R17中(我认为)它开始将外部项目源打包到.jar文件中,并将它们直接包含在Android Dependencies或/ libs文件夹中的项目中。

现在,当调试器遇到断点时,它会在.jar中显示源代码,实际上是告诉您编辑.class文件。问题是该文件是只读的,因此您必须手动查找.java源。 (疼痛)

修复方法是在调试视图中右键单击Project name,然后从菜单中选择“Edit Source Lookup ...”。从那里,删除默认查找路径。之后,手动添加项目引用的关联项目(而不是jar)。这可以通过单击Add,选择Java Project,然后检查相应的项目来完成。

答案 1 :(得分:6)

好的,所以我讨厌成为“那个人”,考虑到这个人工作的人数,但这对我来说根本不起作用。我的意思是“编辑源查找...”菜单项不在上下文菜单中。我没有错过在Debug Perspective中执行此操作的指令(可能在Debug Perspective中的Project Explorer中)。我在应用程序运行时尝试了,而应用程序暂停了。我尝试检查应用程序项目的菜单(可能是指令所指的)和库的项目。没有骰子。这是最新的Eclipse构建。

但是,我能够解决这个问题:

  1. 在您尝试链接源的应用程序或库中设置断点。你可以把它放在任何地方,只要你试图链接源的库有一个函数,当遇到断点时它将出现在调用堆栈上
  2. 开始调试您的应用程序。
  3. 导航您的应用以点击断点。
  4. 确保您处于Debug透视图中。
  5. 在“调试”选项卡(显示调用堆栈的位置)中,从库中找到任何函数。
  6. 右键单击该功能。 “Edit Source Lookup ...”菜单选项应该在那里(靠近底部)。
  7. 从这里开始,说明与Styler相同。单击“添加”,选择“Java项目”并添加项目(或多个项目)。
  8. 在退出“编辑源查找...”窗口之前,如果您像我一样,您将看到Eclipse已选择将一堆内容添加到您未选择的列表中。其中一些东西(可能在名为“Android Private Libraries”的可扩展项目下)可能是您刚添加源的库的jar。从列表中删除这些jar。
  9. 利润!

答案 2 :(得分:6)

  1. 打开main project properties -> Java Build Path -> Projects标签,然后添加主项目所依赖的项目。
  2. 切换到Order and Export标签,取消选中Android Dependencies
  3. 享受

答案 3 :(得分:2)

由于某种原因,Eclipse不相信类文件来自您的Java文件。这通常是配置错误的构建路径,或者是使用jar文件而不是生成jar文件的项目。

查看项目管理器面板(<->按钮)以查看Eclipse找到类文件的位置,然后找出它使用该位置的原因,而不是使用源文件的项目。