Eclipse中的“Open Declaration”导航到类文件而不是Android库的源文件

时间:2012-01-26 10:27:51

标签: java android eclipse

我有两个Android项目'A'和'B'。 'B'取决于'A'并且是图书馆。每当我在项目'B'中并为位于'A'的Java源文件点击'Open Declaration'时,Eclipse就会导航到类文件而不是源文件。这当然有几个缺点!

我查看了项目'B'的构建路径,看看引用的库'A'是否有正确的源项目路径。

任何人都知道如何解决这个问题?

以下是每个项目的.classpath和project.properties文件:

ProjectA .classpath

<?xml version="1.0" encoding="UTF-8"?>
  <classpath>
  <classpathentry kind="src" path="src"/>
  <classpathentry kind="src" path="gen"/>
  <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
  <classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
  <classpathentry kind="output" path="bin/classes"/>
</classpath>

ProjectA project.properties

# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system use,
# "ant.properties", and override values to adapt the script to your
# project structure.

# Project target.
target=android-8
android.library=true

ProjectB .classpath

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
  <classpathentry kind="src" path="src"/>
  <classpathentry kind="src" path="gen"/>
  <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
  <classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
  <classpathentry kind="output" path="bin/classes"/>
</classpath>

ProjectB project.properties

# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system use,
# "ant.properties", and override values to adapt the script to your
# project structure.

# Project target.
target=android-8
android.library.reference.1=../ProjectA

5 个答案:

答案 0 :(得分:19)

您可以将库项目不仅作为Android Lib导入(这就是它要完成的方式),还可以作为通常的“Java Build Path”菜单中的链接项目导入。 接下来,请务必将此导入移至“订购和导出”选项卡中的顶部(至少更多“库项目”条目)。

这有效,但它是一个黑客,它很脏。这不是它要完成的方式......当你将应用程序部署到手机时,eclipse会在控制台中写一条错误消息,说某些apk无法找到...

但是,我发现链接到类文件更方便。

我不知道这是怎么回事。办公室里的伙伴们运行的配置与我相同,他们没有这个问题,但似乎我们不是唯一有这个问题的人:http://code.google.com/p/android/issues/detail?id=20731

答案 1 :(得分:11)

当我的库项目A版本位于“Properties&gt; Java Build Path&gt; Libraries”中时,我遇到了同样的问题,但是在“Properties&gt; Java Build Path&gt; Projects”中却没有。

在我执行以下操作后问题得以解决:

  1. 从“属性&gt; Java构建路径&gt;库”中删除“库项目”,这是由“属性&gt; Java构建路径&gt;库”添加的(我不确定此步骤是否必要,但这是我做了什么)。
  2. 将项目A添加到“属性&gt; Java构建路径&gt;项目”。
  3. 重启Eclipse(Indigo)。不知何故,Eclipse在“Properties&gt; Java Build Path&gt; Libraries”
  4. 中重新创建了Library Projects

    .classpath应具有以下内容:

    <classpathentry combineaccessrules="false" kind="src" path="/A"/>
    

    实际上导航到类文件并不是最烦人的,但是在调试期间打破类文件而不是java文件会让我疯狂,直到这个问题得到解决。

答案 2 :(得分:8)

对我有用:在订单导出标签下移动lib项目 - 位于主要/src/gen下方项目

答案 3 :(得分:1)

我的第一个猜测是你在B的构建路径上有一个带有A类的JAR。检查“库”选项卡。你能告诉我们你的.classpath和project.properties文件吗?

答案 4 :(得分:0)

以下解决方案适合我:

转到android库项目(在你的情况下,它是A)设置 - &gt; Java构建路径 - &gt;订单和导出,确保第一个条目是库的源文件夹(A)。然后清理库项目和目标项目。现在它工作得很好。