Problem description
When attempting to run a Java application that utilizes java.awt.SplashScreen, a java.lang.UnsatisfiedLinkError occurs. The stack trace indicates that the library /data/data/com.termux/files/usr/lib/jvm/java-17-openjdk/lib/libsplashscreen.so is unable to locate the symbol libiconv_open.
OpenJDK21 also have this issue
What steps will reproduce the bug?
Install openjdk-17 or 21in Termux.
Run a Java application that uses the splash screen functionality (e.g., LateralGM or another Swing/AWT application).
Observe the UnsatisfiedLinkError in the console.
java.lang.UnsatisfiedLinkError: /data/data/com.termux/files/usr/lib/jvm/java-17-openjdk/lib/libsplashscreen.so: dlopen failed: cannot locate symbol "libiconv_open" referenced by "/data/data/com.termux/files/usr/lib/jvm/java-17-openjdk/lib/libsplashscreen.so"...
at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:388)
at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:232)
at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:174)
at java.base/jdk.internal.loader.NativeLibraries.findFromPaths(NativeLibraries.java:315)
at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:285)
at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2403)
at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:818)
at java.base/java.lang.System.loadLibrary(System.java:2006)
at java.desktop/java.awt.SplashScreen$1.run(SplashScreen.java:135)
at java.desktop/java.awt.SplashScreen$1.run(SplashScreen.java:133)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
at java.desktop/java.awt.SplashScreen.getSplashScreen(SplashScreen.java:132)
at org.lateralgm.main.LGM$SplashProgress.<init>(LGM.java:1338)
at org.lateralgm.main.LGM.createAndShowGUI(LGM.java:1099)
at org.lateralgm.main.LGM.access$2(LGM.java:1091)
at org.lateralgm.main.LGM$6.run(LGM.java:1238)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
What is the expected behavior?
The Java application should launch correctly, and the splash screen (if defined) should be displayed without any errors. I believe it's some kind of regression, because it works in the past
System information
Termux Variables:
TERMUX_APP_PACKAGE_MANAGER=apt
TERMUX_APP__APK_FILE=/data/app/~~otrb4Ex-7qEtfzad1W8dLQ==/com.termux-isYcPIGG_qrazHCRR-SqxQ==/base.apk
TERMUX_APP__APK_RELEASE=F_DROID
TERMUX_APP__APP_VERSION_CODE=1020
TERMUX_APP__APP_VERSION_NAME=0.119.0-beta.1
TERMUX_APP__DATA_DIR=/data/user/0/com.termux
TERMUX_APP__IS_DEBUGGABLE_BUILD=false
TERMUX_APP__IS_INSTALLED_ON_EXTERNAL_STORAGE=false
TERMUX_APP__PACKAGE_NAME=com.termux
TERMUX_APP__PID=4715
TERMUX_APP__TARGET_SDK=28
TERMUX_VERSION=0.119.0-beta.1
TERMUX__SE_FILE_CONTEXT=u:object_r:app_data_file:s0:c39,c257,c512,c768
TERMUX__SE_INFO=default:targetSdkVersion=28:complete
TERMUX__SE_PROCESS_CONTEXT=u:r:untrusted_app_27:s0:c39,c257,c512,c768
TERMUX__UID=10295
TERMUX__USER_ID=0
Packages CPU architecture:
aarch64
Subscribed repositories:
# sources.list
deb https://ftp.fau.de/termux/termux-main stable main
# tur-repo (sources.list.d/tur.list)
deb https://tur.kcubeterm.com tur-packages tur tur-on-device tur-continuous
# x11-repo (sources.list.d/x11.list)
deb https://ftp.fau.de/termux/termux-x11 x11 main
Updatable packages:
layer-shell-qt/x11 6.4.3 aarch64 [upgradable from: 6.4.2]
openjdk-17-x/stable 17.0.16 aarch64 [upgradable from: 17.0.15-2]
openjdk-17/stable 17.0.16 aarch64 [upgradable from: 17.0.15-2]
termux-tools version:
1.45.0
Android version:
15
Kernel build information:
Linux localhost 4.19.157-perf+ #1 SMP PREEMPT Mon Jul 7 01:44:11 UTC 2025 aarch64 Android
Device manufacturer:
motorola
Device model:
XT2125-4
Supported ABIs:
SUPPORTED_ABIS: arm64-v8a,armeabi-v7a,armeabi
SUPPORTED_32_BIT_ABIS: armeabi-v7a,armeabi
SUPPORTED_64_BIT_ABIS: arm64-v8a
LD Variables:
LD_LIBRARY_PATH=
LD_PRELOAD=/data/data/com.termux/files/usr/lib/libtermux-exec-ld-preload.so
Installed termux plugins:
com.termux.x11 versionCode:15
com.termux.gui versionCode:7
Problem description
When attempting to run a Java application that utilizes java.awt.SplashScreen, a java.lang.UnsatisfiedLinkError occurs. The stack trace indicates that the library /data/data/com.termux/files/usr/lib/jvm/java-17-openjdk/lib/libsplashscreen.so is unable to locate the symbol libiconv_open.
OpenJDK21 also have this issue
What steps will reproduce the bug?
What is the expected behavior?
The Java application should launch correctly, and the splash screen (if defined) should be displayed without any errors. I believe it's some kind of regression, because it works in the past
System information