Java SWT + Webkit + DBus

Java program in devmode works fine, but errors appear in strict mode.

SWT SessionManagerDBus: Failed to RegisterClient: GDBus.Error:org.freedesktop.DBus.Error.AccessDenied: An AppArmor policy prevents this sender from sending this message to this recipient; type="method_call", sender=":1.445" (uid=1000 pid=94300 comm="/snap/my-java-app/x1/usr/lib/jvm/java-8-openjdk-amd" label="snap.my-java-app.my-java-app (enforce)") interface="org.gnome.SessionManager" member="RegisterClient" error name="(unset)" requested_reply="0" destination=":1.22" (uid=1000 pid=1806 comm="/usr/libexec/gnome-session-binary --systemd-servic" label="unconfined")

SWT WebKitGDBus: error creating DBus server Error binding to address (GUnixSocketAddress): Permission denied
SWT WebKit: error initializing DBus server, dBusServer == 0

/usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/WebKitWebProcess: /snap/my-java-app/x1/gnome-platform/usr/lib/x86_64-linux-gnu/libffi.so.7: no version information available (required by /snap/my-java-app/x1/usr/lib/x86_64-linux-gnu/libwayland-client.so.0)

(my-java-app:94300): GLib-GIO-CRITICAL **: 11:43:17.750: g_dbus_server_get_client_address: assertion 'G_IS_DBUS_SERVER (server)' failed

dmesg output

[12363.906256] audit: type=1400 audit(1621068197.348:1634): apparmor="DENIED" operation="bind" profile="snap.my-java-app.my-java-app" pid=94300 comm="java" family="unix" sock_type="stream" protocol=0 requested_mask="bind" denied_mask="bind" addr="@/tmp/SWT-GDBusServer/dbus-NJ2l5hqk"
[12364.290742] audit: type=1107 audit(1621068197.732:1638): pid=673 uid=103 auid=4294967295 ses=4294967295 msg='apparmor="DENIED" operation="dbus_method_call"  bus="system" path="/org/freedesktop/NetworkManager" interface="org.freedesktop.DBus.Properties" member="GetAll" mask="send" name=":1.10" pid=94338 label="snap.my-java-app.my-java-app" peer_pid=674 peer_label="unconfined"

I am using ‘base: core20’ and the gnome-3-38 extension.

In snapcraft.yaml
plugs: [network, network-bind, x11, home, unity7, desktop, desktop-legacy, gsettings, wayland, optical-drive, removable-media]

How to properly enable work with DBus?

Please help me somebody.
Hasn’t anyone packaged Java SWT programs with Webkit. Webkit uses DBus which blocks AppArmor.
https://git.eclipse.org/c/platform/eclipse.platform.swt.git/commit/?id=558be9a19c6de3c914ccbed0ac541d5c849bf1f5

snappy-debug gives advice that I don’t understand.

= AppArmor =
Time: May 18 12:09:37
Log: apparmor="DENIED" operation="bind" profile="snap.my-java-app.my-java-app" pid=282678 comm="java" family="unix" sock_type="stream" protocol=0 requested_mask="bind" denied_mask="bind" addr="@/tmp/SWT-GDBusServer/dbus-nc05UaDA"
Suggestions:
* adjust '@/tmp/SWT-GDBusServer/dbus-nc05UaDA' to start with 'snap.my-java-app.' (eg, '@snap.my-java-app./tmp/SWT-GDBusServer/dbus-nc05UaDA')
* use 'listen-stream: @snap.my-java-app./tmp/SWT-GDBusServer/dbus-nc05UaDA' for a socket-activated daemon

Description of the problem



https://bugs.eclipse.org/bugs/show_bug.cgi?id=552387

I managed to get around this problem by using
org.eclipse.swt.browser.DefaultType = chromium

2 Likes