Pregunta

Estoy intentando 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 de haz   org.x.y.Activator de paquete org.x.y no es válido.

¿Tiene usted alguna idea acerca de este error?

¿Fue útil?

Solución

build.properties

Si no se especifica correctamente lo que se supone que está en el resultado binario final, no va a funcionar. Compruebe los archivos .class son donde la MANIFIEST.MF dice que serán.


EclipseZone , otra de las razones para este mensaje de error:

  

Si aparece un mensaje en el registro como

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

, entonces esto generalmente significa que ha habido un ClassNotFoundException tratando de cargar la clase, en primer lugar, antes de que incluso llegó al método start ().


penguru añade:

  

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

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

Consejos básicos: usted puede ser mejor con sus inicializaciones hecho en el método start() de Activator en lugar de su constructor.

Otros consejos

También enfrenté mismo problema al importar plugins de diferentes espacio de trabajo. Básicamente, es la ruta de clase paquete donde el marco busca durante la carga de las clases. Cuando se importa 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 el archivo de clase están presentes.

Después de modificar la ruta de clase tratar de limpiar y volver a construir y volver a ejecutar. Se debe work..hopefully ..

Si usted tiene mover el espacio de trabajo de Eclipse a un nuevo camino, entonces usted debe utilizar el Proyecto-> limpio antes de su construcción plug-in, o si quiere cumplir con este problema.

OK, odio ser capitán obvio aquí, pero he hecho este error antes. Esto también puede ocurrir cuando se olvida de extender BundleActivator.

pasé algún tiempo con este problema. Finalmente me di cuenta de que los ClassNotFoundExceptions no estaban de acuerdo con mi código, que venían de edad) (paquetes erróneos. He comprobado si había algún otro plugin que estaba jugando con mis depura / exportaciones y de hecho hubo, mi propio plug-in!

Así que una solución simple para probar si estás frente a esto y la CNFE de que no están en línea con su código:

  • Vaya a "Instalar nuevo software"
  • Haga clic en "ya instalado"
  • Eliminar todas las instancias de su paquete / plugin y reinicie

Probablemente esto fue causado porque he cambiado el ID de plug-in, por lo que Eclipse tratarlo como un nuevo plugin.

Otro buen sitio para echar un vistazo si estás atascado y sienten frustrados: http: //www.eclipsezone.com/eclipse/forums/t99010.html

En mi caso no fue este mensaje "Activador ..invalid", pero en los próximos excepciones hubo excepciones ClassNotFound en un paquete estuviera i no cambiar algo ..

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

Bundle-ManifestVersion: 2

a

Bundle-ManifestVersion: 3

todo funciona:)

Me dio la misma excepción. El problema subyacente era un ClassCastException. Mi paquete requiere org.osgi.core 4.3 mientras que el lanzador equinoccio utiliza 4.2.

Saludos Roland

Esto también puede ocurrir si el nombre de un paquete después de un paquete en otro paquete.

Así que:

  • si ha Bundle A que contiene el paquete org.my.package.name.function,
  • y se crea con el nombre bundle B org.my.package.name.function,
    • => entonces el sistema puede buscar el activador de allí, y no encontrar ninguna.

He encontrado el motivo del error. El error se produce cuando intento crear un nuevo objeto de cualquier otra clase en el constructor de la clase activador. ¿No es legal para crear un objeto en el activador de plug-in?

En mi caso esta excepción era debido a la incapacidad de Eclipse cargador de clase personalizada para resolver y cargar todas las clases en función de otros plugins en tiempo. No estoy Eclipse súper-guru así que quizás fue mi culpa.

Sin embargo, se fija mediante la desactivación de la carga diferida de plugin. En GUI en Visión general pestaña del editor de desmarque MANIFEST.MF Activar este plug-in cuando se carga una de sus clases . O directamente en MANIFEST.MF eliminar la línea

Bundle-ActivationPolicy: lazy

Otro capitán obvio:. Si cambia las rutas de los archivos de origen (por ejemplo src / a src / main / java), pero se olvidan de actualizar build.properties, la compilación siempre tendrá éxito, pero su plugin nunca funcionará

Yo tenía el mismo error, en mi caso he creado mi propio constructor con parámetros. Pero no le proporcionamos un constructor por defecto. Así que después de la eliminación de mi constructor y inicializado todos dentro del método start (), trabajó como encanto.

I también encontré con el mismo error. El activador de paquete XX XX no es válida, y la ClassNotFoundException. Revisé plugins \ directorio, y no pudo encontrar la clase necesaria.

- Porque no hay archivo jar que contiene la clase necesaria, sólo existe el directorio correspondiente. Por ejemplo, no hay com.hh.jar, pero sólo com.hh directorio.

Por lo tanto, tiene que haber algo malo sobre la creación de la com.hh.jar.

Si la referencia com.hh.jar otros plugins, entonces también comprobar ellos.

He resuelto el problema mediante la edición de MANIFIEST.MF. Abrirlo por Plug-in Manifiesto Editor, en la pestaña de tiempo de ejecución, añadir paquetes necesarios en "paquetes exportados". y en la "ruta de clases", añadir las bibliotecas necesarias, y, "" (Directorio actual, IMPORTANTE)

También he funcionado en este isue cuando los archivos jar de civil 'bundle-izing'. Si algunas dependencias no se resuelven, o frascos dependen de una versión de Java más alto que el que usted está usando, el activador no se iniciará, dando la excepción anteriormente. La forma más rápida para averiguar si este es el problema consiste en eliminar los frascos del paquete-ruta de clase (pestaña Tiempo de ejecución del manifiesto) y comprobar si el activador se ejecutará correctamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top