Question

Je suis en train de créer un simple plugin Eclipse. Quand je lance l'application, je vois cette erreur dans le fichier journal:

  

org.osgi.framework.BundleException: L'activateur de faisceau   org.x.y.Activator pour bundle org.x.y est invalide.

Avez-vous une idée sur cette erreur?

Était-ce utile?

La solution

Vérifiez votre build.properties

Si elle ne précise pas correctement ce qui est censé être le résultat binaire final, il ne fonctionnera pas. Vérifiez les fichiers .class sont ceux où l'MANIFEST.MF dit qu'ils seront.


EclipseZone , une autre raison de ce message d'erreur:

  

Si vous voyez un message dans le journal comme

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

, cela signifie généralement il y a eu un ClassNotFoundException essayant de charger la classe en premier lieu, avant qu'il ne soit même arrivé à la méthode start ().


penguru ajoute:

  

L'erreur se produit lorsque je tente de créer un nouvel objet d'une autre classe dans le constructeur de la classe d'activateur. Est-il pas légal de créer un objet dans le plugin activateur?

  • Si cette classe si d'un autre plug-in qui n'a pas encore été « activé », qui pourrait être votre problème.
  • Si cette classe ne se trouve pas, cela invalidera également votre activateur de plug-in.

Conseils de base: vous pouvez être mieux avec vos initialisations fait dans la section méthode start() de Activator plutôt que de son constructeur.

Autres conseils

J'ai aussi dû faire face même problème lors de l'importation des plugins de différents espace de travail. Au fond, il est le paquet classpath où le cadre cherche pendant le chargement des classes. Lorsque vous importez à un autre espace de travail, assurez-vous de modifier le chemin de classe pour pointer vers l'emplacement approprié à savoir où le fichier de classe sont présents.

Après avoir modifié le classpath essayer de nettoyer et reconstruire et réinstallation. Il devrait work..hopefully ..

Si vous avez déplacer l'espace de travail Eclipse vers un nouveau chemin, vous devez utiliser le Projet-> propre avant la construction de plug-in, ou si vous rencontrer ce problème.

OK, je déteste être capitaine évident ici, mais je l'ai fait cette erreur avant. Cela peut également se produire lorsque vous oubliez d'étendre BundleActivator.

J'ai passé quelque temps avec ce problème. Enfin, je remarque que les ClassNotFoundExceptions ne cadraient pas avec mon code, ils venaient de paquets mal (vieux). J'ai vérifié s'il y avait un autre plug-in qui a été déconner avec mes debugs / exportations et en fait il y avait, mon propre plug-in!

Alors une solution simple à essayer si vous êtes confronté à cela et ne sont pas en ligne avec votre code de CNFE:

  • Cliquez sur "Installer un nouveau logiciel"
  • Cliquez sur "déjà installé"
  • Supprimez toutes les instances de votre package / plug-in et redémarrer

Probablement cela a été causé parce que je l'ai changé l'ID de plug-in, faisant Eclipse traiter comme un nouveau plug-in.

Un autre bon site pour jeter un coup d'oeil si vous obtenez frustré et coincé: http: //www.eclipsezone.com/eclipse/forums/t99010.html

Dans mon cas, il y avait ce message « Activateur ..invalid », mais dans les prochaines exceptions, il y avait des exceptions ClassNotFound dans un Bundle ont été i na pas changer quelque chose ..

Guu (Posté une solution aussi) est mon héros, après augmentation

Bundle-ManifestVersion: 2

à

Bundle-ManifestVersion: 3

tout fonctionne:)

Je suis la même exception. Le problème sous-jacent était un ClassCastException. Mon paquet nécessite org.osgi.core 4.3 alors que le lanceur d'équinoxe utilise 4.2.

Cordialement Roland

Cela peut également se produire si vous nommez un paquet après un paquet dans un autre paquet.

  • si vous avez Bundle A qui contient org.my.package.name.function paquet,
  • et vous créez bundle B avec le nom org.my.package.name.function,
    • => le système peut rechercher l'activateur là-bas, et ne trouve pas.

J'ai trouvé la raison de l'erreur. L'erreur se produit lorsque je tente de créer un nouvel objet d'une autre classe dans le constructeur de la classe d'activateur. Est-il pas légal de créer un objet activateur de plug-in?

Dans mon cas, cette exception est à cause de l'incapacité du chargeur de classe Eclipse personnalisée pour résoudre et charger toutes les classes en fonction d'autres plug-ins en temps. Je ne suis pas Eclipse super-gourou alors peut-être que c'était ma faute.

Cependant, il a été fixé par la désactivation de chargement différé de plug-in. Dans l'interface graphique sur Aperçu de décocher éditeur de MANIFEST.MF Activer ce plug-in lorsque l'une de ses classes est chargé . Ou directement MANIFEST.MF supprimer la ligne

Bundle-ActivationPolicy: lazy

Un autre capitaine évident. Si vous modifiez les chemins de vos fichiers sources (par exemple src / src / main / java), mais oubliez de mettre à jour build.properties, la compilation réussira toujours, mais votre plugin ne fonctionnera jamais

J'ai eu la même erreur, dans mon cas, je créé mon propre constructeur avec des paramètres. Mais je n'ai pas fourni un constructeur par défaut. Donc, après avoir enlevé mon constructeur et initialisé tout dans la méthode start (), il a travaillé comme charme.

J'ai aussi rencontré la même erreur. Le XX activatrice de faisceau XX est invalide, et la ClassNotFoundException. J'ai vérifié plugins \ répertoire, et ne pouvait pas trouver la classe nécessaire.

- Parce qu'il n'y a pas de fichier jar contenant la classe nécessaire, il n'y a que le répertoire correspondant. Par exemple, il n'y a pas com.hh.jar, mais seulement com.hh répertoire.

Alors, il doit y avoir quelque chose de mal sur la création du com.hh.jar.

si référence com.hh.jar autres plug-ins, puis les vérifier aussi.

Je l'ai résolu le problème en éditant MANIFEST.MF. Ouvrez par Plug-in Editor Manifest, dans l'onglet d'exécution, ajouter des packages nécessaires "paquets" Exporté. et dans le « classpath », ajoutez les bibliothèques nécessaires, et, « » (Répertoire courant, IMPORTANT)

J'ai aussi rencontré ce isue lorsque les fichiers PLAIN bundle-izing 'pot. Si certaines dépendances ne sont pas résolus, ou des pots dépendent d'une version JAVA plus élevé que celui que vous utilisez, l'activateur ne démarre pas, donnant l'exception ci-dessus. Le moyen rapide de savoir si c'est le problème est d'enlever les pots du paquet-classpath (onglet d'exécution du manifeste) et vérifier si l'activateur fonctionnera correctement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top