Frage

Ich versuche, ein einfaches Plugin in Eclipse zu erstellen. Wenn ich die Anwendung ausführen, sehe ich diesen Fehler in Protokolldatei:

  

org.osgi.framework.BundleException: Der Aktivator für das Bündel   org.x.y.Activator für Bündel org.x.y ist ungültig.

Haben Sie eine Ahnung über diesen Fehler?

War es hilfreich?

Lösung

Überprüfen Sie Ihre build.properties Abschnitt

Wenn es nicht richtig angeben, was in dem letzten binären Ergebnis sein soll ist, wird es nicht funktionieren. Überprüfen Sie die .class-Dateien sind, wo der MANIFEST.MF sagt sie werden.


EclipseZone , ein weiterer Grund für diese Fehlermeldung:

  

Wenn Sie eine Meldung im Protokoll wie

 The activator org.example.FooActivator for bundle org.example.foo is invalid 
  

, dann in der Regel bedeutet dies eine ClassNotFoundException hat versucht, die Klasse in erster Linie zu laden, bevor es überhaupt an den Start () -Methode bekommt ist.


penguru fügt hinzu:

  

Der Fehler tritt auf, wenn ich von einer anderen Klasse im Konstruktor der Aktivator-Klasse ein neues Objekt versuchen zu erstellen. Ist es nicht legal, ein Objekt in Aktivator-Plugin zu erstellen?

  • Wenn die Klasse, wenn von einem anderen Plugin, das noch nicht „aktiviert“ ist, die Ihr Problem sein könnten.
  • Wenn diese Klasse nicht gefunden wird, das wäre auch dein Plugin Aktivator ungültig machen.

Grund Beratung: Sie können mit Ihrem Initialisierungen besser dran, in der start() Methode von Activator anstatt dem Konstruktor.

Andere Tipps

ich auch gleiche Problem konfrontiert, während Plugins von anderen Arbeitsbereich importieren. Im Grunde ist es das Bündel Classpath, wo der Rahmen für das aussieht, während die Klassen geladen werden. Wenn Sie in einem anderen Arbeitsbereich importieren, stellen Sie sicher, dass Sie den Klassenpfad das heißt, um geeignete Position zu zeigen ändern, in dem die Klassendatei vorhanden ist.

Nach dem Classpath Modifizieren versuchen zu reinigen und neu zu bauen und re-run. Es sollte work..hopefully ..

Wenn Sie den Eclipse-Workspace auf einen neuen Pfad bewegen müssen, dann sollten Sie die projekt- verwenden> sauber, bevor Ihr Plugin zu bauen, oder würden Sie dieses Problem gerecht werden.

OK, ich hasse offensichtlich, hier zu seinen Kapitän, aber ich habe diesen Fehler gemacht vor. Dies kann auch passieren, wenn Sie vergessen Bundle zu verlängern.

verbrachte ich mit diesem Problem einige Zeit. Schließlich bemerkte ich, dass die ClassNotFoundExceptions mit meinem Code nicht im Einklang waren, wurden sie von falschen (alten) Paketen kommen. Ich überprüfte, ob es eine andere Plugin war, die mit meinem Debuggt / export wurde durcheinander und in der Tat war, mein eigenes Plugin!

So eine einfache Lösung, um zu versuchen, wenn Sie dies gegenüber und die CNFE die nicht im Einklang mit dem Code:

  • Gehen Sie auf "neue Software installieren"
  • Klicken Sie auf "bereits installiert"
  • Entfernen Sie alle Instanzen des Pakets / Plugin und starten

Wahrscheinlich wurde dies dadurch verursacht, dass ich die Plugin-ID geändert, so dass Eclipse-es als ein neues Plugin behandeln.

Eine weitere gute Seite einen Blick zu nehmen, wenn Sie frustriert und stecken: http: //www.eclipsezone.com/eclipse/forums/t99010.html

In meinem Fall gibt es diese Nachricht „Activator ..invalid“ aber in den nächsten Ausnahmen gab es ClassNotFound Ausnahmen in einem Bundle wurden i did not etwas ändern ..

Guu (Veröffentlicht eine Lösung zu) ist mein Held, nach zu erhöhen

Bundle-ManifestVersion: 2

Bundle-ManifestVersion: 3

alles funktioniert:)

Ich habe die gleiche Ausnahme. Das zugrundeliegende Problem war ein Classcast. Mein Bündel erfordert org.osgi.core 4.3 während der Tagundnachtgleiche Launcher verwendet 4.2.

Viele Grüße Roland

Dies kann auch passieren, wenn Sie ein Bündel nach einem Paket in einem anderen Bündel nennen.

So:

  • wenn Sie Bundle A welches Paket org.my.package.name.function enthält,
  • und erstellen Sie bundle B mit Namen org.my.package.name.function,
    • => dann kann das System dort für den Aktivator suchen und nicht finden alle.

fand ich den Grund des Fehlers. Der Fehler tritt auf, wenn ich erstellen versuchen, ein neues Objekt aus einer anderen Klasse im Konstruktor der Aktivator-Klasse. Ist es nicht legal, ein Objekt in Aktivator-Plugin zu erstellen?

In meinem Fall war diese Ausnahme wegen der Unfähigkeit von Eclipse benutzerdefinierte Class Loader alle abhängig Klassen von anderen Plugins in-Zeit zu lösen und zu laden. Ich bin nicht Eclipse-Super-Guru so vielleicht war es meine Schuld.

Jedoch wurde es durch die Deaktivierung verzögertes Laden von Plugins behoben. In GUI auf Übersicht Registerkarte MANIFEST.MF Editor deaktivieren Aktivieren dieses Plug-in, wenn einer seiner Klassen geladen wird . Oder direkt in MANIFEST.MF Zeile löschen

Bundle-ActivationPolicy: lazy

Ein weiterer Kapitän der Hand:. Wenn Sie die Pfade der Quelldateien ändern (zB src / zu src / main / java), aber vergessen build.properties zu aktualisieren, wird die Zusammenstellung immer erfolgreich, aber dein Plugin funktioniert nie

Ich hatte den gleichen Fehler, in meinem Fall habe ich mit den Parametern meinem eigenen Konstruktor erstellt. Aber ich habe nicht einen Standardkonstruktor bereitstellen. Also nach meinem Konstruktor zu entfernen und alle innerhalb der Methode start () initialisiert, es funktionierte wie Charme.

Ich traf auch den gleichen Fehler. Der Aktivator für XX XX Bündel ungültig ist, und die ClassNotFoundException. Ich habe Plugins \ Verzeichnis, und könnte die Klasse benötigt nicht gefunden.

- Da es keine JAR-Datei ist die benötigte Klasse enthält, ist es nur das entsprechende Verzeichnis. Zum Beispiel gibt es keine com.hh.jar, aber nur com.hh Verzeichnis.

Also, es muss die com.hh.jar etwas nicht in Ordnung sein, um zu schaffen.

Wenn com.hh.jar Referenz andere Plugins, dann ist auch sie überprüfen.

Ich löste das Problem, indem sie MANIFEST.MF bearbeiten. Öffnen Sie es durch Plug-in-Manifest-Editor in Runtime Registerkarte hinzufügen benötigten Pakete in "Exportierte Packages". und in dem „Classpath“, fügen Sie benötigte Bibliotheken und „“ (Aktuelles Verzeichnis, WICHTIG)

Ich habe auch in diesem isue laufen, wenn ‚Bündel-llen‘ Ebene JAR-Dateien. Wenn einige Abhängigkeiten nicht aufgelöst werden, oder Gläser sind abhängig von einer höheren JAVA-Version als die, die Sie verwenden, wird nicht der Aktivator starten, die obige Ausnahme geben. Der schnelle Weg, um herauszufinden, ob dies das Problem ist, die Gläser aus dem Bündel-Classpath (Runtime-Registerkarte des Manifests) und prüfen zu entfernen, wenn der Aktivator korrekt ausgeführt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top