[Gvsig_desarrolladores] Error de linkage de librería fmap.jar al ejecutar mi extensión

Cèsar Ordiñana cordin en disid.com
Mie Abr 14 19:13:30 CEST 2010


Hola Dani,

Para tener acceso a clases que se incluyen en otra extensión, como es el 
caso que planteas de fmap incluido en la extensión principal de gvSIG 
(appgvSIG), basta con que indiques en el config.xml que dependes de 
dicha extensión mediante algo como:


<?xml version="1.0" encoding="ISO-8859-1"?>
<plugin-config>
    <depends plugin-name="com.iver.cit.gvsig" />
...
</plugin-config>

Así, en ejecución, tendrás acceso desde tu extensión a todas las clases 
de los jars ubicados dentro de:

gvSIG\extensiones\com.iver.cit.gvsig\lib

Asegurate también que no incluyes dentro de tu extensión ningún jar que 
ya esté incluido en la extensión anterior ni en andami (gvSIG\lib).

Saludos,

-- 
Cèsar Ordiñana Navarro
gvSIG software architect
DiSiD Technologies (http://www.disid.com)


Dani Gonzalez escribió:
>
> Buenas tardes,
>
> Tengo un proyecto de eclipse con dos extensiones (clases que heredan 
> de la clase Extension), que me funcionan correctamente usando la 
> última versión estable de gvSig 1.9 (build 1253) descargada desde el 
> repositorio SVN.
>
> He desarrollado una tercera extensión que simplemente hace un backup 
> de algunas propiedades de las capas que hay cargadas en el TOC a un 
> fichero externo xml, ya que nos interesa poder guardar y restaurar 
> algunas propiedades como por ejemplo los hiperenlaces, de forma 
> parecida a como se puede hacer con los ficheros .gvl de la simbología.
>
>  
>
> Bien, el caso es que gvSig se ejecuta pero no me aparece la opción en 
> el menú que tengo configurada en el "config.xml" de mi proyecto, y el 
> motivo es que hay un error al localizar la clase 
> _com/iver/cit/gvsig/fmap/layers/XMLException_:
>
>  
>
> DEBUG [AWT-EventQueue-1] (_Launcher.java:812_) - Initializing 
> extensions from es.geodata.gvsig.tools
>
> ERROR [AWT-EventQueue-1] (_Launcher.java:874_) - Error en localitzar 
> la classe de l'extensióes.geodata.gvsig.backup.Backup
>
> java.lang.NoClassDefFoundError: 
> _com/iver/cit/gvsig/fmap/layers/XMLException_
>
>       at java.lang.Class.getDeclaredConstructors0(_Native Method_)
>
>       at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
>
>       at java.lang.Class.getConstructor0(Unknown Source)
>
>       at java.lang.Class.newInstance0(Unknown Source)
>
>       at java.lang.Class.newInstance(Unknown Source)
>
>       at 
> com.iver.andami.Launcher.initializeExtensions(_Launcher.java:842_)
>
>       at com.iver.andami.Launcher.access$6(_Launcher.java:807_)
>
>       at com.iver.andami.Launcher$3.run(_Launcher.java:369_)
>
>       at java.awt.event.InvocationEvent.dispatch(Unknown Source)
>
>       at java.awt.EventQueue.dispatchEvent(Unknown Source)
>
>       at 
> com.iver.andami.ui.AndamiEventQueue.dispatchEvent(_AndamiEventQueue.java:58_)
>
>       at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown 
> Source)
>
>       at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown 
> Source)
>
>       at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
>
>       at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
>
>       at java.awt.EventDispatchThread.run(Unknown Source)
>
>  INFO [AWT-EventQueue-1] (_Launcher.java:855_) - Initializing 
> es.geodata.gvsig.carrerer.Geocodificacion...
>
>  INFO [AWT-EventQueue-1] (_Launcher.java:855_) - Initializing 
> es.geodata.gvsig.tools.Main...
>
>  
>
> Esta clase es necesaria en mi extensión debido a que estoy usando la 
> clase Marchaller de la librería castor, que permite serializar un 
> objeto a un fichero XML usando su método marshall(), que es el método 
> que lanza XMLException y que capturo en un try/catch.
>
>  
>
> Para solucionar este problema, he añadido un task de Ant en el 
> build.xml que copia fmap.jar al directorio "dist" que luego se mueve a 
> Andami junto con el resto de las extensiones del proyecto.
>
> Entonces ya aparece la opción en el menú, pero al hacerle clic y 
> ejecutarse la extensión, aparece este otro error:
>
>  
>
>  
>
> DEBUG [AWT-EventQueue-1] (_NotificationManager.java:104_) - 
> PluginServices.Error grave de la aplicación. 
>
>  Es conveniente que salgas de la aplicación
>
> java.lang.LinkageError: Class com/iver/cit/gvsig/fmap/MapContext 
> violates loader constraints
>
>       at java.lang.ClassLoader.defineClass1(_Native Method_)
>
>       at java.lang.ClassLoader.defineClass(Unknown Source)
>
>       at java.security.SecureClassLoader.defineClass(Unknown Source)
>
>       at java.net.URLClassLoader.defineClass(Unknown Source)
>
>       at java.net.URLClassLoader.access$100(Unknown Source)
>
>       at java.net.URLClassLoader$1.run(Unknown Source)
>
>       at java.security.AccessController.doPrivileged(_Native Method_)
>
>       at java.net.URLClassLoader.findClass(Unknown Source)
>
>       at java.lang.ClassLoader.loadClass(Unknown Source)
>
>       at 
> com.iver.andami.plugins.PluginClassLoader.loadClass(_PluginClassLoader.java:242_)
>
>       at java.lang.ClassLoader.loadClass(Unknown Source)
>
>       at java.lang.ClassLoader.loadClassInternal(Unknown Source)
>
>       at es.geodata.gvsig.backup.Backup.execute(_Backup.java:49_)
>
>       at 
> com.iver.andami.plugins.ExtensionDecorator.execute(_ExtensionDecorator.java:89_)
>
>       at 
> com.iver.andami.ui.mdiFrame.MDIFrame.actionPerformed(_MDIFrame.java:673_)
>
>       at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
>
>       at javax.swing.AbstractButton$Handler.actionPerformed(Unknown 
> Source)
>
>       at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown 
> Source)
>
>       at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
>
>       at javax.swing.AbstractButton.doClick(Unknown Source)
>
>       at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
>
>       at 
> javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown 
> Source)
>
>       at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
>
>       at java.awt.Component.processMouseEvent(Unknown Source)
>
>       at javax.swing.JComponent.processMouseEvent(Unknown Source)
>
>       at java.awt.Component.processEvent(Unknown Source)
>
>       at java.awt.Container.processEvent(Unknown Source)
>
>       at java.awt.Component.dispatchEventImpl(Unknown Source)
>
>       at java.awt.Container.dispatchEventImpl(Unknown Source)
>
>       at java.awt.Component.dispatchEvent(Unknown Source)
>
>       at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
>
>       at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
>
>       at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
>
>       at java.awt.Container.dispatchEventImpl(Unknown Source)
>
>       at java.awt.Component.dispatchEvent(Unknown Source)
>
>       at java.awt.EventQueue.dispatchEvent(Unknown Source)
>
>       at 
> com.iver.andami.ui.AndamiEventQueue.dispatchEvent(_AndamiEventQueue.java:58_)
>
>       at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown 
> Source)
>
>       at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown 
> Source)
>
>       at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
>
>       at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
>
>       at java.awt.EventDispatchThread.run(Unknown Source)
>
>  
>
>  
>
> Según lo que he podido leer por Internet, es el típico error 
> "java.lang.LinkageError" que se produce al existir dos versiones de 
> archivos .class, ya que ahora existen dos ficheros fmap.jar.
>
>  
>
> - He probado a desactivar la opción Build automatically de eclipse, 
> hacer un "clean all" de todos los proyectos y recompilar usando los 
> tasks "Build All" de los proyectos binaries y appgvSIG (y de esta 
> forma generar otra vez fmap.jar) pero sigo obteniendo los mismos 2 
> errores.
>
>  
>
> - Mi proyecto tiene añadido en la pestaña "Projects" de su "Java Build 
> Path" el proyecto libFMap (que es donde se encuentra la clase 
> XMLException).
>
>  
>
> - He descomprimido el fichero fmap.jar que hay en la ruta 
> "_fwAndami\gvSIG\extensiones\com.iver.cit.gvsig\lib" y sí que contiene 
> XMLException.class, así que no entiendo como es posible que no 
> encuentre la clase.
>
>  
>
> Agradecería que me dierais alguna idea porque ya no se qué más probar.
>
> Muchas gracias!
>
>  
>
> Daniel González Moratona
>
> _dani.gonzalez en geodata.es_
>
> ________________________________
>
> Geodata Sistemas, S.L.
>
> Tecnologies de la informació geogràfica
>
> Bac de Roda 136 1er 1a
>
> 08020 Barcelona
>
> tel. 93 3035367
>
> http://www.geodata.es <http://www.geodata.es/>
>
>

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20100414/0c2b9998/attachment.htm 


Más información sobre la lista de distribución gvSIG_desarrolladores