Creía que esta línea estaba en mi config.xml, ya que recuerdo que esto se 
comenta en los manuales, pero por algún descuido la borré.

Muchas gracias, ya me funciona.

 

Daniel González Moratona

[email protected]

________________________________

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/> 

 

 

________________________________

De: [email protected] 
[mailto:[email protected]] En nombre de Cèsar 
Ordiñana
Enviado el: miércoles, 14 de abril de 2010 19:14
Para: Lista de Desarrolladores de gvSIG
Asunto: Re: [Gvsig_desarrolladores] Error de linkage de librería fmap.jar al 
ejecutar mi extensión

 

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

[email protected]

________________________________

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/> 

 

 

_______________________________________________
gvSIG_desarrolladores mailing list
[email protected]
http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores

Responder a