Der Maven-Compiler kann den Import nicht auflösen
Ich versuche, mehrere Eclipse-Produkte mit Maven und Tycho zu erstellen. Ich bin derzeit mit einem Problem beschäftigt, bei dem ein Bundle A von einer Klasse aus Bundle B abhängig ist. Bundle B hat eine Paketstruktur ähnlich der folgenden:
a.b.c.d.e.f.Class
Wenn ich jetzt versuche, AI zu erstellen, erhalte ich einen Kompilierungsfehler, der ungefähr so aussieht:
import a.b.c.d.e.f.MyClass;
[ERROR] ^^^^^^^^^
[ERROR] The import a.b.c.d.e cannot be resolved
Wenn Sie genau hinschauen, sehen Sie, dass Maven anscheinend versucht, das falsche Paket aufzulösen, da es nur angibt, dass es nicht aufgelöst werden kann, a.b.c.d.e
während sich die Klasse, die importiert werden soll, tatsächlich in befindet a.b.c.d.e.f
.
Außerdem sind in keine Klassen vorhanden a.b.c.d.e
. Ich habe versucht, beides a.b.c.d.e
als exportiertes Paket in das Manifest aufzunehmen und es aus dieser Liste zu entfernen, aber keines hat geholfen.
Was könnte hier das Problem sein?
Antworten
Nachdem ich maven mit sehr detaillierter Protokollierung ausgeführt hatte, überprüfte ich die Argumente, dass maven (tycho) beim Kompilieren von Bundle A an den JDT-Compiler übergeben wurde. Ich bemerkte, dass nur eine JAR übergeben wurde, die ich dem Klassenpfad von Bundle B hinzugefügt hatte.
Dann bemerkte ich, dass ich im MANIFEST von Bundle B, in dem ich das spezifizierte Bundle-Classpath
, nur The JAR auf dem Klassenpfad hatte. Ich dachte vorher, dass die Klassen des Bundles selbst standardmäßig hinzugefügt werden würden, aber nach dem Hinzufügen ,.
zur Bundle-Classpath
Eigenschaft funktionierte der Build wieder.
Wenn Sie mehr darüber lesen möchten, hat DIESER POST mich in die richtige Richtung gelenkt .