Wednesday, April 19, 2006

Eclipse UnsatisfiedLinkError: libswt-pi-gtk-3139

I ran into this a bit ago and found no solutions online. I figured it was my duty to provide at least one posting on how I solved it, since there seems to be a lot of frustrated people out there. My eventual solution was to run with 1.5 instead of 1.4.

Upon starting Eclipse 3.1.1 or higher (or other SWT-based apps, it seems) under AMD64-based Linux, many people have reported the following error:

!ENTRY org.eclipse.osgi 2006-04-08 13:53:48.407
!MESSAGE Application error
!STACK 1
java.lang.UnsatisfiedLinkError: /usr/local/src/eclipse/configuration/org.eclipse.osgi/bundles/85/1/.cp/libswt-pi-gtk-3139.so: /usr/local/src/eclipse/configuration/org.eclipse.osgi/bundles/85/1/.cp/libswt-pi-gtk-3139.so: 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:1586)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1495)
at java.lang.Runtime.loadLibrary0(Runtime.java:788)

...etc

The .so in question is present, but it seems that when running under Sun's JDK 1.4.2, which does not provide an AMD64 version, this library can't be successfully loaded. I'm not saying this is a Java issue or an Eclipse issue, but I resolved it by running Eclipse under Sun's JDK 1.5 built for AMD64.

Hopefully this helps anyone else out there searching for a solution.

3 comments:

  1. Try to add the path to the jvm (java virtual machine)

    Example:

    /home/username/bin/eclipse/eclipse -vm /usr/lib/jvm/java-1.4.2-sun/bin/java -vmargs -Xmx256M

    ReplyDelete
  2. Hi folks,
    it worked for me on Suse10, AMD64, Eclipse3.2 with jdk1.5 and adding the path to the jvm as the last comment said.

    Thanks!
    mic.

    ReplyDelete
  3. Do you, desperate eclipse user, have the noexec flag set in /etc/fstab for /home?

    libswt-gtk is in your .eclipse subdirectory (in your home)... and it's supposed to be "executed".

    That was my error. Just in case it's yours too.

    ReplyDelete