[Gvsig_desarrolladores] "Undefined Reference" cuando intento usar PluginServices

Joaquin del Cerro jjdelcerro.gvsig en gmail.com
Mie Oct 3 20:27:09 CEST 2012


El 03/10/12 16:03, Alexandre P.M. escribió:
> Hola
>
> Estoy modificando la clase del FortuneCookies
> "DeafultJFortuneCookiesServicePanel.java" para que extienda de IWindow y asi
> tener mi propia ventana dentro de gvSIG.
>
> He añadido los metodos "getWindowInfo" y "getWindowProfile" y todo me
> compila bien.
>
> Al generar el archivo .jar me da el siguiente error:
>
> *INFO] Checking unresolved references to
> org.codehaus.mojo.signature:java15:1.0
> [ERROR] Undefined reference:
> org/gvsig/andami/PluginServices.getMDIManager()Lorg/gvsig/andami/ui/mdiManager/MDIManager;
> in
>
/home/alex/workspace/PFC/org.gvsig.jaspatopologyrules/org.gvsig.jaspatopologyrules.swing/org.gvsig.jaspatopologyrules.swing.impl/target/classes/org/gvsig/jaspatopologyrules/swing/impl/DefaultJJaspaTopologyRulesServicePanel.class
> [ERROR] Undefined reference:
> org/gvsig/andami/ui/mdiManager/MDIManager.addCentredWindow(Lorg/gvsig/andami/ui/mdiManager/IWindow;)Lorg/gvsig/andami/ui/mdiManager/IWindow;
> in
>
/home/alex/workspace/PFC/org.gvsig.jaspatopologyrules/org.gvsig.jaspatopologyrules.swing/org.gvsig.jaspatopologyrules.swing.impl/target/classes/org/gvsig/jaspatopologyrules/swing/impl/DefaultJJaspaTopologyRulesServicePanel.class
> [ERROR] Undefined reference: org/gvsig/andami/ui/mdiManager/WindowInfo in
>
/home/alex/workspace/PFC/org.gvsig.jaspatopologyrules/org.gvsig.jaspatopologyrules.swing/org.gvsig.jaspatopologyrules.swing.impl/target/classes/org/gvsig/jaspatopologyrules/swing/impl/DefaultJJaspaTopologyRulesServicePanel.class
> [ERROR] Undefined reference:
> org/gvsig/andami/ui/mdiManager/WindowInfo.<init>(I)V in
>
/home/alex/workspace/PFC/org.gvsig.jaspatopologyrules/org.gvsig.jaspatopologyrules.swing/org.gvsig.jaspatopologyrules.swing.impl/target/classes/org/gvsig/jaspatopologyrules/swing/impl/DefaultJJaspaTopologyRulesServicePanel.class*
>
> Es como que no me encuentra las clases WindowInfo y PluginServices. Alguna
> idea?
> Es esto debido al pom.xml de alguno de los proyectos en los que estoy
> trabajando?
>

Hola Alexandre,
el problema que tienes es un problema de concepto, y no un problema en ningun pom.
No recuerdo muy bien los detalles del proyecto de FortuneCookies, pero la idea es la siguiente:

- Por un lado tienes un proyecto con la libreria con la logica. Esta libreria no deberia presentar
  interface de usuario, y podria tener dependencias con otras librerias, pero no con
  plugins o con andami. De esa manera puede ser reutilizada en otros entornos la logica
  de tu aplicacion.

- Por otro lado tienes otro proyecto con la libreria que aporta el iterface de usuario a la libreria de la
  logica. Esta libreria tendria dependencias con la logica y otras librerias  (solo su api), tanto de logica
  como de interface de usuario, pero nunca con otros plugins o andami. Esto permite
  reutilizarla desde otras aplicaciones/contextos que no sean la ejecucion de gvSIG.

- Por otro lado tienes otro proyecto con el plugin de gvSIG. Este proyecto dependen de andami, y puede
  depender de otros plugins si fuese necesario, asi como de las librerias que precise.
  En este es donde se realiza la integracion entre tus librerias y gvSIG. Es a aqui donde
  debes unir la logica e interface de usuario que aportan tus librerias con gvSIG.

Lo que estas intentando hacer es fijar una dependencia de tu libreria de interface de
usuario con andami, cosa completamente desaconsejada en gvSIG. Si realmente quieres hacer
eso, pasa de la division en distintos proyectos para crear uno solo, el del plugin, en el
que lo mezcles todo, pero no te lo aconsejo.

La idea es que tu libreria de IU aporta paneles y/o componentes swing que luego usas en
tu plugin para componer las ventanas que precises.

La configuracion de los poms que se generan por defecto desde el asistente esta pensada
para detectar y evitar que se mezclen las distintas capas de abstraccion:

- lib-api
- lib-impl
- lib-swing-api
- lib-swing-impl
- plugin

Y por eso no te deja enlazar desde la libreria de swing con andami. La configuracion
que deja el asistente esta pensada para que eso solo se pueda hacer desde el plugin.

Se tratan de buenas practicas de programacion de forma que se encapsulan las responsabilidades
de cada cual para mantener un acoplamiento controlado entre las distintas partes del
desarrollo.

Evidentemente, siempre eres libre de pasar de ellas y montar tu plugin como consideres
oportuno, simpre que no quieras que en un futuro este tenga el visto de proyecto oficial
de gvSIG.

Espero que te sirvan los comentarios, y se neceistas consejo o ayuda sobre como montar
alguna parte del desarrollo solo tienes que comentarlo.

Un saludo

Joaquin


> Saludos y gracias por adelantado.
>
> Alex
>
>
>
>
> --
> View this message in context: http://osgeo-org.1560.n6.nabble.com/Undefined-Reference-cuando-intento-usar-PluginServices-tp5006122.html
> Sent from the gvSIG desarrolladores mailing list archive at Nabble.com.
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en listserv.gva.es
> Para ver histórico de mensajes, editar sus preferencias de usuario o darse de baja en esta lista, acuda a la siguiente dirección: http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>


-- 
--------------------------------------
Joaquin Jose del Cerro
Development and software arquitecture manager.
jjdelcerro en gvsig.com
gvSIG Association
www.gvsig.com
www.gvsig.org



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