java eclipse eclipse-plugin osgi osgi-bundle

java - El activador para el paquete no es válido



eclipse eclipse-plugin (14)

Estoy tratando de crear un plugin simple en eclipse. Cuando ejecuto la aplicación, veo este error en el archivo de registro:

org.osgi.framework.BundleException: el activador para el paquete org.xyActivator para el paquete org.xy no es válido.

¿Tienes alguna idea sobre este error?


Bien, odio ser el capitán obvio aquí, pero he cometido este error antes. Esto también puede suceder cuando se olvida de extender BundleActivator.


En mi caso hubo este Mensaje "Activator ..invalid" pero en las siguientes excepciones hubo Excepciones de ClassNotFound en un Paquete donde no cambié algo ...

Guu (publicado una solución también) es mi héroe, después de aumentar

Bundle-ManifestVersion: 2

a

Bundle-ManifestVersion: 3

Todo funciona :)


En mi caso, esta excepción se debió a la incapacidad del cargador de clases personalizado de Eclipse para resolver y cargar todas las clases dependientes de otros complementos a tiempo. No soy un super-gurú de Eclipse, así que tal vez fue mi culpa.

Sin embargo, se solucionó al deshabilitar la carga perezosa del complemento. En la GUI en la pestaña Información general del editor MANIFEST.MF , desactive Activar este complemento cuando se carga una de sus clases . O directamente en MANIFEST.MF borrar línea

Bundle-ActivationPolicy: lazy


Esto también puede suceder si nombra un paquete después de un paquete en otro paquete.

Asi que:

  • si tiene el Bundle A que contiene el paquete org.my.package.name.function ,
  • y creas el bundle B con el nombre org.my.package.name.function ,
    • => entonces el sistema puede buscar el activador allí, y no encontrar ninguno.

He encontrado la razón del error. El error se produce cuando intento crear un nuevo objeto de cualquier otra clase en el constructor de la clase activator. ¿No es legal crear un objeto en el activador de plugin?


Otro capitán obvio: si cambia las rutas de sus archivos de origen (por ejemplo, src / to src / main / java), pero olvida actualizar build.properties, la compilación siempre tendrá éxito, pero su complemento nunca funcionará.


Pasé un tiempo con este problema. Finalmente, noté que las ClassNotFoundExceptions no estaban en línea con mi código, que venían de paquetes incorrectos (viejos). ¡Verifiqué si había algún otro plugin que estuviera jugando con mis debugs / exportados y de hecho hubo mi propio plugin!

Así que una solución simple para probar si te enfrentas a esto y las CNFE no están en línea con tu código:

  • Ir a "Instalar nuevo software"
  • Haga clic en "ya instalado"
  • Elimina todas las instancias de tu paquete / complemento y reinicia

Probablemente esto se debió a que cambié la ID del complemento, haciendo que Eclipse lo tratara como un nuevo complemento.

Otro buen sitio para echarle un vistazo si se siente frustrado y atascado: http://www.eclipsezone.com/eclipse/forums/t99010.html


Si ha movido el espacio de trabajo de eclipse a una nueva ruta, entonces debe usar el proyecto-> limpiar antes de compilar su complemento, o resolvería este problema.


También me encontré con el mismo error. El activador XX para el paquete XX no es válido, y la excepción ClassNotFoundException. Revisé los plugins / directorio, y no pude encontrar la clase necesaria.

- Debido a que no hay un archivo jar que contenga la clase necesaria, solo existe el directorio correspondiente. Por ejemplo, no hay com.hh.jar, sino solo el directorio com.hh.

Por lo tanto, debe haber algo mal en la creación de com.hh.jar.

Si com.hh.jar hace referencia a otros complementos, entonces también verifíquelos.

Resolví el problema editando MANIFEST.MF. Ábralo con Plug-in Manifest Editor, en la pestaña de tiempo de ejecución, agregue los paquetes necesarios en "Paquetes exportados". y en la "ruta de clase", agregue las bibliotecas necesarias y ". (directorio actual, IMPORTANTE)


También me enfrenté al mismo problema al importar complementos desde diferentes áreas de trabajo. Básicamente, es la ruta de clase del paquete que busca el marco al cargar las clases. Cuando importe a un espacio de trabajo diferente, asegúrese de cambiar la ruta de clase para que apunte a la ubicación apropiada, es decir, donde está presente el archivo de clase.

Después de modificar el classpath, intente limpiar, reconstruir y volver a ejecutar. Debería funcionar ... espero ..


También me he topado con este problema al ''empaquetar'' archivos de archivos de archivos. Si algunas dependencias no se resuelven, o los frascos dependen de una versión de JAVA más alta que la que está utilizando, el activador no se iniciará, dando la excepción anterior. La forma rápida de averiguar si este es el problema es eliminar los archivos jar del bundle-classpath (pestaña de tiempo de ejecución del manifiesto) y verificar si el activador se ejecutará correctamente.


Tengo la misma excepción. El problema subyacente era una ClassCastException. Mi paquete requiere org.osgi.core 4.3 mientras que el lanzador del equinoccio usa 4.2.

Saludos Roland


Tuve el mismo error, en mi caso creé mi propio constructor con parámetros. Pero no proporcioné un constructor por defecto. Así que después de eliminar mi constructor e inicializar todo dentro del método start (), funcionó como un charme.


Revise su sección de build.properties

Si no especifica correctamente lo que se supone que está en el resultado binario final, no funcionará. Verifique que los archivos .class estén donde MANIFEST.MF dice que estarán.

de EclipseZone , otra razón para este mensaje de error:

Si ve un mensaje en el registro como

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

Por lo general, esto significa que ha habido una ClassNotFoundException intenta cargar la clase en primer lugar, incluso antes de que llegue al método start ().

agrega:

El error se produce cuando intento crear un nuevo objeto de cualquier otra clase en el constructor de la clase activator. ¿No es legal crear un objeto en el complemento activador?

  • Si esa clase es de otro complemento que aún no ha sido "activado", ese podría ser su problema.
  • Si no se encuentra esa clase, eso también invalidaría su activador de complemento.

Consejo básico: puede que esté mejor con sus inicializaciones realizadas en el método start() de Activator lugar de su constructor.