Linux/GTK Cairo versioning issues
---------------------------------
Key: UDIG-692
URL: http://jira.codehaus.org/browse/UDIG-692
Project: uDIG
Type: Bug
Components: map
Versions: UDIG 1.1.M4
Environment: Linux/GTK >= 2.8.3
Reporter: Richard Gould
Assigned to: Jesse Eichar
Priority: Critical
Fix For: UDIG 1.1.M4
GTK+ >= 2.8.3 uses Cairo 1.0 (libcairo.so.2), but SWT 3.1 uses Cairo 0.4
(libcairo.so.1)
If libcairo.so.1 is present in jre/lib/i386 then uDig crashes with error
"java: cairo-surface.c:273: cairo_surface_reference: Assertion
`surface->ref_count > 0' failed."
Usually because cairo 1.0 is already loaded. If it is already loaded, SWT
cannot resolve it and throws:
!ENTRY net.refractions.udig.project.ui 4 0 2006-02-28 13:27:36.955
!MESSAGE Unable to load graphics library [Cairo is required]
(java.lang.UnsatisfiedLinkError:
/home/rgould/dev/workspace-udig-trunk/.metadata/.plugins/org.eclipse.pde.core/udig.product/org.eclipse.osgi/bundles/208/1/.cp/libswt-cairo-gtk-3139.so:
libcairo.so.1: cannot open shared object file: No such file or directory)
!STACK 0
org.eclipse.swt.SWTException: Unable to load graphics library [Cairo is
required] (java.lang.UnsatisfiedLinkError:
/home/rgould/dev/workspace-udig-trunk/.metadata/.plugins/org.eclipse.pde.core/udig.product/org.eclipse.osgi/bundles/208/1/.cp/libswt-cairo-gtk-3139.so:
libcairo.so.1: cannot open shared object file: No such file or directory)
at org.eclipse.swt.SWT.error(SWT.java:2942)
at org.eclipse.swt.graphics.Device.checkCairo(Device.java:154)
at org.eclipse.swt.graphics.Path.<init>(Path.java:64)
at
net.refractions.udig.ui.graphics.SWTGraphics.convertToPath(SWTGraphics.java:150)
at
net.refractions.udig.ui.graphics.SWTGraphics.draw(SWTGraphics.java:126)
at net.refractions.udig.ui.Drawing.paint(Drawing.java:276)
at net.refractions.udig.ui.Drawing.drawFeature(Drawing.java:216)
at net.refractions.udig.ui.Drawing.drawFeature(Drawing.java:193)
at net.refractions.udig.ui.Drawing.drawDirect(Drawing.java:133)
at net.refractions.udig.ui.graphics.Glyph$4.getImageData(Glyph.java:239)
at
org.eclipse.jface.resource.ImageDescriptor.createImage(ImageDescriptor.java:279)
at
org.eclipse.jface.resource.ImageDescriptor.createImage(ImageDescriptor.java:253)
at
net.refractions.udig.project.ui.internal.LayerGeneratedGlyphDecorator$2$1.run(LayerGeneratedGlyphDecorator.java:197)
Caused by: java.lang.UnsatisfiedLinkError:
/home/rgould/dev/workspace-udig-trunk/.metadata/.plugins/org.eclipse.pde.core/udig.product/org.eclipse.osgi/bundles/208/1/.cp/libswt-cairo-gtk-3139.so:
libcairo.so.1: cannot open shared object file: No such file or directory
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1751)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1660)
at java.lang.Runtime.loadLibrary0(Runtime.java:822)
at java.lang.System.loadLibrary(System.java:992)
at org.eclipse.swt.internal.Library.loadLibrary(Library.java:123)
at org.eclipse.swt.internal.cairo.Cairo.<clinit>(Cairo.java:27)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
at org.eclipse.swt.graphics.Device.checkCairo(Device.java:152)
... 33 more
A temporary fix for now is to fall back on ViewportPaneJava in MapEditor when
Linux is detected:
if (Platform.getOS().equals(Platform.OS_LINUX)) {
viewportPane = new ViewportPaneJava(parent, this);
} else {
viewportPane = new ViewportPaneSWT(parent, this);
}
See eclipse bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=114298
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net
http://lists.refractions.net/mailman/listinfo/udig-devel