25 Stimmen

'Open Declaration' in Eclipse navigiert zu Klassendateien statt zu Quelldateien für Android Libraries

Ich habe zwei Android-Projekte 'A' und 'B'. B" hängt von "A" ab und ist eine Bibliothek. Immer wenn ich im Projekt 'B' bin und auf 'Open Declaration' für eine Java-Quelldatei drücke, die sich in 'A' befindet, navigiert Eclipse zur Klassendatei statt zur Quelldatei. Das hat natürlich mehrere Nachteile!

Ich habe einen Blick auf den Build-Pfad von Projekt "B" geworfen, um zu sehen, ob die referenzierte Bibliothek "A" den richtigen Pfad zu ihrem Quellprojekt hat, was der Fall ist.

Weiß jemand, wie man das beheben kann?

Hier sind die Dateien .classpath und project.properties für jedes Projekt:

ProjektA .klassenpfad

<?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>

ProjektA projekt.eigenschaften

# 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

ProjektB .klassenpfad

<?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>

ProjektB projekt.eigenschaften

# 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

19voto

GaRRaPeTa Punkte 5169

Sie können das Bibliotheksprojekt nicht nur als Android Lib importieren (das ist der richtige Weg), sondern auch als verknüpftes Projekt im üblichen Menü "Java Build Path". Stellen Sie anschließend sicher, dass Sie diesen Import in der Registerkarte "Bestellung und Export" an die erste Stelle verschieben (zumindest vor den Eintrag "Bibliotheksprojekte").

Das funktioniert, aber es ist ein Hack und es ist schmutzig. Dies ist nicht die Art und Weise, wie es getan werden soll... und wenn Sie die App auf dem Telefon bereitstellen, wird Eclipse eine Fehlermeldung in der Konsole schreiben, dass einige apk nicht gefunden werden kann...

Dennoch finde ich es bequemer, als auf die Klassendatei zu verweisen.

Ich weiß nicht, was hier passiert. Meine Kumpels im Büro haben die gleiche Konfiguration wie ich, und sie haben dieses Problem nicht, aber es scheint, wir sind nicht die einzigen, die dieses Problem haben: http://code.google.com/p/Android/issues/detail?id=20731

11voto

Hong Punkte 16499

Ich hatte das gleiche Problem, wenn meine Version von Bibliotheksprojekt A in "Eigenschaften > Java Build Path > Bibliotheken", aber nicht in "Eigenschaften > Java Build Path > Projekte" war.

Das Problem war gelöst, nachdem ich Folgendes getan hatte:

  1. Entfernen Sie "Library Projects" aus "Properties > Java Build Path > Libraries", das durch "Properties > Java Build Path > Libraries" hinzugefügt wurde (ich bin nicht sicher, ob dieser Schritt notwendig ist, aber ich habe es so gemacht).
  2. Fügen Sie Projekt A zu "Eigenschaften > Java Build Path > Projekte" hinzu.
  3. Starten Sie Eclipse (Indigo) neu. Irgendwie erstellt Eclipse die Bibliotheksprojekte unter "Eigenschaften > Java Build Path > Bibliotheken" neu.

Der .classpath sollte folgendes enthalten:

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

Eigentlich war das Navigieren zu Klassendateien nicht das Lästigste, aber das Einbrechen in Klassendateien anstelle von Java-Dateien während der Fehlersuche machte mich verrückt, bevor dieses Problem gelöst wurde.

8voto

Andrei Punkte 81

Bei mir hat es funktioniert, die lib-Projekte unter die Bestellung y Exportieren Registerkarte - rechts unten /src y /gen des Hauptprojekts.

1voto

E-Riz Punkte 29348

Meine erste Vermutung wäre, dass Sie ein JAR mit den Klassen von A im Build-Pfad von B haben. Überprüfen Sie die Registerkarte Bibliotheken. Können Sie uns Ihre Dateien .classpath und project.properties zeigen?

0voto

Jin Meng Punkte 1

Die folgende Lösung funktioniert bei mir:

Gehen Sie zu den Einstellungen des Android-Bibliotheksprojekts (in Ihrem Fall ist es A) -> Java Build Path -> Order and Export und stellen Sie sicher, dass der erste Eintrag der Quellordner der Bibliothek (A) ist. Bereinigen Sie dann das Bibliotheksprojekt und das Zielprojekt. Jetzt funktioniert es einwandfrei.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X