Java UnsatisfiedLinkError: libawt_xawt.so: libXext.so.6

I’m having some problems while creating my first snap.
Given this

name: mapton
base: core18
version: '2.0.1'
summary: Some kind of map application
description: |
    Mapton is an easy to use map application that runs on your desktop.
    It combines the simplicity of a mobile app with the capability of being extensible  with powerful custom plugins.

    On its own, Mapton is a capable map application, however, Mapton is also a platform for domain specific GIS related plugin development.

grade: devel # must be 'stable' to release into candidate/stable channels
architectures: [ amd64 ]
confinement: devmode # use 'strict' once you have the right plugs and slots

apps:
  mapton:
    command: mapton/bin/mapton

parts:
  mapton:
    # See 'snapcraft plugins'
    plugin: dump
    source: https://github.com/trixon/mapton/releases/download/v$SNAPCRAFT_PROJECT_VERSION/mapton-$SNAPCRAFT_PROJECT_VERSION-linux.zip
#    source: /root/project/mapton.zip
    source-type: zip
    stage-packages:
      - libfreetype6
      - libpng16-16
      - libgl1
      - libx11-6
      - libxext6
      - libxrender1
      - libxi6
      - libxxf86vm1
      - libgl1-mesa-dri
      - libglu1-mesa
      - libgl1-mesa-glx
      - libgles2-mesa
      - x11-xserver-utils
      - libasound2
      - libgtk-3-0
      - libxtst6
      - libgtk2.0-0
      - libavutil55
      - libavcodec57
      - libavformat57

results in this warning

Unable to determine library dependencies for ‘/root/prime/mapton/platform/modules/lib/i386/linux/libjnidispatch-nb.so’
This part is missing libraries that cannot be satisfied with any available stage-packages known to snapcraft:

  • libavcodec-ffmpeg.so.56
  • libavcodec.so.54
  • libavcodec.so.56
  • libavcodec.so.58
  • libavformat-ffmpeg.so.56
  • libavformat.so.54
  • libavformat.so.56
  • libavformat.so.58
    These dependencies can be satisfied via additional parts or content sharing. Consider validating configured filesets if this dependency was built.

I just could not satisfy those dependencies.

When trying to start the application I got this:

java.lang.UnsatisfiedLinkError: /snap/mapton/x13/mapton/jre/lib/libawt_xawt.so: libXext.so.6: cannot open shared object file: No such file or directory
	at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
	at java.base/java.lang.ClassLoader$NativeLibrary.load(Unknown Source)
	at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(Unknown Source)
	at java.base/java.lang.ClassLoader.loadLibrary0(Unknown Source)
	at java.base/java.lang.ClassLoader.loadLibrary(Unknown Source)
	at java.base/java.lang.Runtime.load0(Unknown Source)
	at java.base/java.lang.System.load(Unknown Source)
	at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
	at java.base/java.lang.ClassLoader$NativeLibrary.load(Unknown Source)
	at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(Unknown Source)
	at java.base/java.lang.ClassLoader.loadLibrary0(Unknown Source)
	at java.base/java.lang.ClassLoader.loadLibrary(Unknown Source)
	at java.base/java.lang.Runtime.loadLibrary0(Unknown Source)
	at java.base/java.lang.System.loadLibrary(Unknown Source)
	at java.desktop/sun.awt.X11GraphicsEnvironment$1.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	at java.desktop/sun.awt.X11GraphicsEnvironment.<clinit>(Unknown Source)
	at java.desktop/sun.awt.PlatformGraphicsInfo.createGE(Unknown Source)
	at java.desktop/java.awt.GraphicsEnvironment$LocalGE.createGE(Unknown Source)
	at java.desktop/java.awt.GraphicsEnvironment$LocalGE.<clinit>(Unknown Source)
	at java.desktop/java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(Unknown Source)
	at org.netbeans.core.startup.Main.start(Main.java:228)
	at org.netbeans.core.startup.TopThreadGroup.run(TopThreadGroup.java:98)
	at java.base/java.lang.Thread.run(Unknown Source)
-------------------------------------------------------------------------------
>Log Session: Tuesday, April 14, 2020 at 4:22:32 PM Central European Summer Time
>System Info: 
  Product Version         = Mapton
  Operating System        = Linux version 5.4.0-21-generic running on amd64
  Java; VM; Vendor        = 14; OpenJDK 64-Bit Server VM 14+36; AdoptOpenJDK
  Runtime                 = OpenJDK Runtime Environment 14+36
  Java Home               = /snap/mapton/x13/mapton/jre
  System Locale; Encoding = en_US (mapton); ANSI_X3.4-1968
  Home Directory          = /home/pata
  Current Directory       = /tmp/hsperfdata_pata
  User Directory          = /home/pata/snap/mapton/x13/.mapton/2.0
  Cache Directory         = /home/pata/snap/mapton/x13/.mapton/2.0/var/cache
  Installation            = /snap/mapton/x13/mapton/extra
                            /snap/mapton/x13/mapton/mapton
                            /snap/mapton/x13/mapton/platform
                            /snap/mapton/x13/mapton/platform
  Boot & Ext. Classpath   = 
  Application Classpath   = /snap/mapton/x13/mapton/platform/lib/boot.jar:/snap/mapton/x13/mapton/platform/lib/org-openide-modules.jar:/snap/mapton/x13/mapton/platform/lib/org-openide-util-lookup.jar:/snap/mapton/x13/mapton/platform/lib/org-openide-util-ui.jar:/snap/mapton/x13/mapton/platform/lib/org-openide-util.jar
  Startup Classpath       = /snap/mapton/x13/mapton/platform/core/asm-7.2.jar:/snap/mapton/x13/mapton/platform/core/asm-commons-7.2.jar:/snap/mapton/x13/mapton/platform/core/asm-tree-7.2.jar:/snap/mapton/x13/mapton/platform/core/core-base.jar:/snap/mapton/x13/mapton/platform/core/core.jar:/snap/mapton/x13/mapton/platform/core/org-netbeans-libs-asm.jar:/snap/mapton/x13/mapton/platform/core/org-openide-filesystems-compat8.jar:/snap/mapton/x13/mapton/platform/core/org-openide-filesystems.jar:/snap/mapton/x13/mapton/mapton/core/locale/core_mapton.jar

Any thoughts on what I should do to make it work?

The simplest to implement way to get your app to find the Xext library is to use the gnome-3-28 extension:

apps:
  mapton:
    command: mapton/bin/mapton
    extensions: [gnome-3-28]
1 Like

Great, now it’s starting and looking really nice, as a bonus I got the desktop integration working too.

Thanks

1 Like