gvSIG bugs #3924

No carga simbolos en formato SVG.

Added by Joaquín del Cerro Murciano over 8 years ago. Updated over 8 years ago.

Status:Closed% Done:

0%

Priority:UrgentSpent time:-
Assignee:Joaquín del Cerro Murciano
Category:Symbology
Target version:2.3.0-2412 (rev. org.gvsig.desktop-2.0.118)
Severity:Minor Add-on version:
gvSIG version:2.3.0 Add-on build:
gvSIG build:2411 Add-on resolve version:
Operative System: Add-on resolve build:
Keywords: Proyecto:
Has patch: Hito:
Add-on name:Unknown

Description

Cuando recuperamos un proyecto guardado con gvSIG 2.2 que tenia simbologia
puntual en la que se utilizan imagenes en formato SVG falla.

En general, al intentar cargar un archivo SVG falla.
Se puede reproducir arrancando gvSIG y iendo a:

Herramientas -> Simbologia -> Explorar simbolos

Y en el explorador de simbolos, seleccionar la pestaña "Marcador"
y "Collective mapping/Social movements".

El error que da es:

ERROR [AWT-EventQueue-0] (NotificationManager.java:90) - Error de la applicacion.  
Es conveniente que salga de la aplicación

org/apache/batik/ext/awt/AreaOfInterestHintKey
java.lang.NoClassDefFoundError: org/apache/batik/ext/awt/AreaOfInterestHintKey
        at org.apache.batik.gvt.AbstractGraphicsNode.paint(AbstractGraphicsNode.java:480)
        at org.gvsig.symbology.fmap.mapcontext.rendering.symbol.style.SVGStyle.drawInsideRectangle(SVGStyle.java:132)
        at org.gvsig.symbology.fmap.mapcontext.rendering.symbol.style.BackgroundFileStyle.drawInsideRectangle(BackgroundFileStyle.java:101)
        at org.gvsig.symbology.fmap.mapcontext.rendering.symbol.marker.impl.PictureMarkerSymbol.draw(PictureMarkerSymbol.java:239)
        at org.gvsig.symbology.fmap.mapcontext.rendering.symbol.marker.impl.AbstractMarkerSymbol.drawInsideRectangle(AbstractMarkerSymbol.java:172)
        at org.gvsig.symbology.fmap.mapcontext.rendering.symbol.marker.impl.PictureMarkerSymbol.drawInsideRectangle(PictureMarkerSymbol.java:266)
        at org.gvsig.app.gui.styling.SymbolPreviewer.paint(SymbolPreviewer.java:184)
        at javax.swing.JComponent.paintChildren(JComponent.java:879)
        at javax.swing.JComponent.paint(JComponent.java:1055)
        at javax.swing.CellRendererPane.paintComponent(CellRendererPane.java:151)
        at javax.swing.plaf.basic.BasicListUI.paintCell(BasicListUI.java:226)
        at javax.swing.plaf.basic.BasicListUI.paintImpl(BasicListUI.java:316)
        at javax.swing.plaf.basic.BasicListUI.paint(BasicListUI.java:239)
        at javax.swing.plaf.ComponentUI.update(ComponentUI.java:161)
        at javax.swing.JComponent.paintComponent(JComponent.java:770)
        at javax.swing.JComponent.paint(JComponent.java:1046)
        at javax.swing.JComponent.paintChildren(JComponent.java:879)
        at javax.swing.JComponent.paint(JComponent.java:1055)
        at javax.swing.JViewport.paint(JViewport.java:731)
        at javax.swing.JComponent.paintChildren(JComponent.java:879)
        at javax.swing.JComponent.paint(JComponent.java:1055)
        at javax.swing.JComponent.paintChildren(JComponent.java:879)
        at javax.swing.JSplitPane.paintChildren(JSplitPane.java:1047)
        at javax.swing.JComponent.paint(JComponent.java:1055)
        at javax.swing.JComponent.paintChildren(JComponent.java:879)
        at javax.swing.JComponent.paint(JComponent.java:1055)
        at javax.swing.JComponent.paintChildren(JComponent.java:879)
        at javax.swing.JComponent.paint(JComponent.java:1055)
        at javax.swing.JComponent.paintChildren(JComponent.java:879)
        at javax.swing.JComponent.paint(JComponent.java:1055)
        at javax.swing.JComponent.paintChildren(JComponent.java:879)
        at javax.swing.JComponent.paint(JComponent.java:1055)
        at javax.swing.JComponent.paintChildren(JComponent.java:879)
        at javax.swing.JComponent.paint(JComponent.java:1055)
        at javax.swing.JLayeredPane.paint(JLayeredPane.java:585)
        at javax.swing.JComponent.paintChildren(JComponent.java:879)
        at javax.swing.JComponent.paint(JComponent.java:1055)
        at javax.swing.JComponent.paintChildren(JComponent.java:879)
        at javax.swing.JComponent.paint(JComponent.java:1055)
        at javax.swing.JComponent.paintChildren(JComponent.java:879)
        at javax.swing.JComponent.paint(JComponent.java:1055)
        at javax.swing.JLayeredPane.paint(JLayeredPane.java:585)
        at javax.swing.JComponent.paintChildren(JComponent.java:879)
        at javax.swing.JComponent.paint(JComponent.java:1055)
        at javax.swing.JViewport.paint(JViewport.java:731)
        at javax.swing.JComponent.paintChildren(JComponent.java:879)
        at javax.swing.JComponent.paint(JComponent.java:1055)
        at javax.swing.JComponent.paintChildren(JComponent.java:879)
        at javax.swing.JComponent.paint(JComponent.java:1055)
        at javax.swing.JComponent.paintChildren(JComponent.java:879)
        at javax.swing.JComponent.paint(JComponent.java:1055)
        at javax.swing.JComponent.paintToOffscreen(JComponent.java:5223)
        at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:295)
        at javax.swing.RepaintManager.paint(RepaintManager.java:1249)
        at javax.swing.JComponent._paintImmediately(JComponent.java:5171)
        at javax.swing.JComponent.paintImmediately(JComponent.java:4982)
        at javax.swing.RepaintManager$3.run(RepaintManager.java:808)
        at javax.swing.RepaintManager$3.run(RepaintManager.java:796)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
        at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:796)
        at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:769)
        at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:718)
        at javax.swing.RepaintManager.access$1100(RepaintManager.java:62)
        at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1677)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:312)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:745)
        at java.awt.EventQueue.access$300(EventQueue.java:103)
        at java.awt.EventQueue$3.run(EventQueue.java:706)
        at java.awt.EventQueue$3.run(EventQueue.java:704)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:715)
        at org.gvsig.andami.ui.AndamiEventQueue.dispatchEvent(AndamiEventQueue.java:50)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Caused by: java.lang.ClassNotFoundException: org.apache.batik.ext.awt.AreaOfInterestHintKey
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        ... 80 more

Associated revisions

Revision 42562
Added by Joaquín del Cerro Murciano over 8 years ago

refs #3924, movido batik al lib de la aplicacion para que este disponible en el classpath raiz.

History

#1 Updated by Joaquín del Cerro Murciano over 8 years ago

No he logrado averiguar por que falla.
El error lo da en la clase AbstractGraphicsNode, linea 480, cuando intenta acceder a un
miembro estatico de RenderingHintsKeyExt.

        Shape curClip = g2d.getClip();
        g2d.setRenderingHint(RenderingHintsKeyExt.KEY_AREA_OF_INTEREST,
                             curClip);

En el momento de ejecutarse la linea 480, el classloader parece ser el que toca,
pero cuando intenta inicializar en un bloque estatico de RenderingHintsKeyExt algunas
variables estaticas deRenderingHintsKeyExt, el classloader ya no es el de org.gvsig.app.mainplugin,
y no encuentra las clases que necesita.

No se que ha podido cambiar respecto a la 2.2 para provocar este fallo.
De momento lo he rodeado, pasando a andami los jars necesarios de batik; pero
me preocupa que en la 2.2 esto fuese en la 2.3 haya dejado de ir.

#2 Updated by Joaquín del Cerro Murciano over 8 years ago

  • Target version set to 2.3.0-2412 (rev. org.gvsig.desktop-2.0.118)

#3 Updated by Joaquín del Cerro Murciano over 8 years ago

  • Status changed from New to Fixed

#4 Updated by Álvaro Anguix over 8 years ago

  • Status changed from Fixed to Closed

Also available in: Atom PDF