plugins - El complemento de inicio falla, falta la restricción javax.xml.bind
eclipse-rcp constraints (4)
Estoy escribiendo un plugin de Eclipse usando Eclipse RCP (Kepler). Todo funcionó bien hasta anoche, de repente comencé a recibir excepciones de puntero nulo al intentar probar mi complemento. Aquí hay un snippit de stacktrace:
!ENTRY org.eclipse.ui.workbench 4 2 2013-08-24 08:36:17.616
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.ui.workbench".
!STACK 0
java.lang.NullPointerException
at org.eclipse.equinox.internal.p2.ui.sdk.scheduler.migration.MigrationSupport.getLastMigration(MigrationSupport.java:229)
at org.eclipse.equinox.internal.p2.ui.sdk.scheduler.migration.MigrationSupport.baseChangedSinceLastPresentationOfWizard(MigrationSupport.java:190)
at org.eclipse.equinox.internal.p2.ui.sdk.scheduler.migration.MigrationSupport.performMigration(MigrationSupport.java:69)
at org.eclipse.equinox.internal.p2.ui.sdk.scheduler.AutomaticUpdateScheduler.earlyStartup(AutomaticUpdateScheduler.java:89)
at org.eclipse.ui.internal.EarlyStartupRunnable.runEarlyStartup(EarlyStartupRunnable.java:87)
at org.eclipse.ui.internal.EarlyStartupRunnable.run(EarlyStartupRunnable.java:66)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.ui.internal.Workbench$55.run(Workbench.java:2552)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
java.lang.NullPointerException
at org.eclipse.core.internal.runtime.InternalPlatform.getLog(InternalPlatform.java:354)
at org.eclipse.core.runtime.Plugin.getLog(Plugin.java:291)
at org.eclipse.ui.internal.WorkbenchPlugin.log(WorkbenchPlugin.java:830)
at org.eclipse.ui.statushandlers.StatusManager.logError(StatusManager.java:285)
at org.eclipse.ui.statushandlers.StatusManager.handle(StatusManager.java:200)
at org.eclipse.ui.statushandlers.StatusManager.handle(StatusManager.java:231)
at org.eclipse.ui.statushandlers.StatusManager$StatusManagerLogListener.logging(StatusManager.java:305)
at org.eclipse.core.internal.runtime.RuntimeLog.logToListeners(RuntimeLog.java:160)
at org.eclipse.core.internal.runtime.PlatformLogWriter.logged(PlatformLogWriter.java:100)
at org.eclipse.equinox.log.internal.ExtendedLogReaderServiceFactory.safeLogged(ExtendedLogReaderServiceFactory.java:86)
at org.eclipse.equinox.log.internal.ExtendedLogReaderServiceFactory.logPrivileged(ExtendedLogReaderServiceFactory.java:205)
at org.eclipse.equinox.log.internal.ExtendedLogReaderServiceFactory.log(ExtendedLogReaderServiceFactory.java:178)
at org.eclipse.equinox.log.internal.ExtendedLogServiceFactory.log(ExtendedLogServiceFactory.java:65)
at org.eclipse.equinox.log.internal.ExtendedLogServiceImpl.log(ExtendedLogServiceImpl.java:87)
at org.eclipse.equinox.log.internal.LoggerImpl.log(LoggerImpl.java:54)
at org.eclipse.core.internal.runtime.PlatformLogWriter.logging(PlatformLogWriter.java:43)
at org.eclipse.core.internal.runtime.RuntimeLog.log(RuntimeLog.java:96)
at org.eclipse.core.runtime.SafeRunner.handleException(SafeRunner.java:71)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:44)
at org.eclipse.ui.internal.Workbench$55.run(Workbench.java:2552)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
Para intentar averiguar qué podría estar pasando, fui a la configuración de inicio de mi complemento y hice clic en "Validar complementos" y obtuve el siguiente error:
org.apache.xmlrpc
Missing Constraint: Import-package: javax.xml.bind; version="0.0.0"
¿Podría ser esta la razón por la cual el lanzamiento de mi plugin está fallando? Si es así, ¿cómo lo arreglo?
Gracias
Puede hacer clic derecho en su proyecto, ir a Ejecutar como -> Ejecutar configuraciones y a la pestaña Complementos. Aquí haga clic en el botón Agregar complementos necesarios y esto debería resolver su problema de validación automáticamente.
Si está probando una aplicación RCP E4 con características, intente agregar org.eclipse.e4.rcp a sus dependencias en el producto -> panel de dependencias. Y haz "agregar requerido". Eso resolvió mi problema
Si tiene instalado EclipseLink 2.5.2, se trata de un error conocido: https://bugs.eclipse.org/bugs/show_bug.cgi?id=456174
Para solucionarlo, actualice a la última versión utilizando este sitio de actualización: http://download.eclipse.org/rt/eclipselink/updates/ Elija una versión más nueva que 2.5.2
NOTA: tuve que desmarcar la casilla de verificación "Ocultar versión instalada" para instalar después de agregar el sitio de actualización, ya que parecía pensar que estaba instalado, aunque mostró que el software NO estaba instalado cuando desactivé la casilla. Una vez que haya instalado la versión más nueva, reinicie Eclipse y luego: 1. Seleccione el menú: Ejecutar -> Ejecutar configuraciones 2. Haga clic en el botón "Agregar paquetes necesarios"
Todo debería funcionar bien después de eso
Tuve que eliminar los siguientes complementos en mi configuración de ejecución "Aplicación Eclipse" para deshacerme de la advertencia xmlrpc :
org.apache.xmlrpc
org.eclipse.mylyn.bugzilla.core
org.eclipse.mylyn.bugzilla.ui
org.eclipse.mylyn.commons.xmlrpc
La advertencia xmlrpc ya se ocupa con
- Nueva descarga de Eclipse RCP, Oxígeno
- Nuevo complemento creado con la plantilla "Hello World, Command"
- Windows7
Desde Oxygen, el problema xmlrpc no aparece en la consola sino como una ventana emergente extra , que me resulta aún más molesto y confuso. La consola muestra el siguiente resultado adicional:
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [bundleresource://555.fwk1347294617:1/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [bundleresource://555.fwk1347294617:2/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]
08:49:41.650 [Worker-1] INFO c.g.t.t.d.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
!SESSION 2017-09-04 08:49:32.846 -----------------------------------------------
eclipse.buildId=4.7.0.I20170612-0950
java.version=1.8.0_144
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE
Framework arguments: -product org.eclipse.platform.ide
Command-line arguments: -product org.eclipse.platform.ide -data D:/eclipse/workspace/../runtime-EclipseApplication -dev file:D:/eclipse/workspace/.metadata/.plugins/org.eclipse.pde.core/Eclipse Application/dev.properties -os win32 -ws win32 -arch x86_64 -consoleLog
!ENTRY org.eclipse.egit.ui 2 0 2017-09-04 08:49:41.847
!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git
user global configuration and to define the default location to store repositories: ''C:/Users/eis''. If this is
not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and
EGit might behave differently since they see different configuration options.
This warning can be switched off on the Team > Git > Confirmations and Warnings preference page.
¿Podría ser esta la razón por la cual el lanzamiento de mi plugin está fallando?
Supongo que no. Mi complemento no parece estar influenciado por esas advertencias.
La advertencia de git se puede deshabilitar en las preferencias del Equipo Eclipse, como sugiere la advertencia en sí.
La advertencia slf4j se puede resolver al eliminar el complemento
ch.qos.logback.slf4j
, también ver múltiples enlaces slf4j en el complemento Eclipse RCP
Si cambia manualmente la selección del complemento, tenga cuidado y use la función Validar complementos para asegurarse de no crear otros problemas de dependencia.
Si tiene instalados complementos adicionales, es posible que vea aún más advertencias, por ejemplo, de checkstyle:
!ENTRY org.eclipse.ui 2 0 2017-09-04 10:09:32.926
!MESSAGE Warnings while parsing the commands from the ''org.eclipse.ui.commands'' and ''org.eclipse.ui.actionDefinitions'' extension points.
!SUBENTRY 1 org.eclipse.ui 2 0 2017-09-04 10:09:32.926
!MESSAGE Commands should really have a category: plug-in=''net.sf.eclipsecs.ui'', id=''CheckstylePlugin.PurgeCaches'', categoryId=''net.sf.eclipsecs''
!ENTRY org.eclipse.ui 2 0 2017-09-04 10:09:33.622
!MESSAGE Warnings while parsing the commands from the ''org.eclipse.ui.commands'' and ''org.eclipse.ui.actionDefinitions'' extension points.
!SUBENTRY 1 org.eclipse.ui 2 0 2017-09-04 10:09:33.622
!MESSAGE Commands should really have a category: plug-in=''net.sf.eclipsecs.ui'', id=''CheckstylePlugin.PurgeCaches'', categoryId=''net.sf.eclipsecs''
=> Es un desastre. Por lo tanto, podría ser una buena idea hacer una copia de las advertencias "predeterminadas" que pueden ignorarse. Entonces será más fácil ver si una advertencia está relacionada con su propio complemento / cambios recientes.
Editar
Archivé un error para las advertencias del estilo de cheque y gracias a Lars Koedderitzsch se resolverán con la versión 8.5.0: https://sourceforge.net/p/eclipse-cs/bugs/428/