beryx / text-io

A library for creating interactive console applications in Java
http://text-io.beryx.org/
Apache License 2.0
342 stars 45 forks source link

java.lang.UnsatisfiedLinkError: /root/wag_inst/tools/jre-linux/lib/libawt_xawt.so: libXrender.so.1: cannot open shared object file: No such file or directory #44

Open john2home opened 6 months ago

john2home commented 6 months ago

Ubuntu 22.04.3 LTS (minimal server) Linux x64 JRE https://adoptium.net/de/temurin/releases/?version=17 use as portable (extract java archiv and set JAVA_HOME)

if we call final TextIO term = TextIoFactory.getTextIO(); we get the following Exception

Exception in thread "main" java.lang.UnsatisfiedLinkError: /root/wag_inst/tools/jre-linux/lib/libawt_xawt.so: libXrender.so.1: cannot open shared object file: No such file or directory
        at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
        at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(Unknown Source)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(Unknown Source)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(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/jdk.internal.loader.NativeLibraries.load(Native Method)
        at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(Unknown Source)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(Unknown Source)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(Unknown Source)
        at java.base/jdk.internal.loader.NativeLibraries.findFromPaths(Unknown Source)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(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/java.awt.Toolkit$2.run(Unknown Source)
        at java.desktop/java.awt.Toolkit$2.run(Unknown Source)
        at java.base/java.security.AccessController.doPrivileged(Unknown Source)
        at java.desktop/java.awt.Toolkit.loadLibraries(Unknown Source)
        at java.desktop/java.awt.Toolkit.initStatic(Unknown Source)
        at java.desktop/java.awt.Toolkit.<clinit>(Unknown Source)
        at java.desktop/java.awt.Color.<clinit>(Unknown Source)
        at org.beryx.textio.jline.JLineTextTerminal.<clinit>(JLineTextTerminal.java:67)
        at org.beryx.textio.jline.JLineTextTerminalProvider.getTextTerminal(JLineTextTerminalProvider.java:32)
        at org.beryx.textio.TextIoFactory$Holder.getDefaultTerminal(TextIoFactory.java:95)
        at org.beryx.textio.TextIoFactory$Holder.<init>(TextIoFactory.java:65)
        at org.beryx.textio.TextIoFactory$Holder.<clinit>(TextIoFactory.java:54)
        at org.beryx.textio.TextIoFactory.getTextIO(TextIoFactory.java:111)

The TextConsole should work on a headless system. I think the problem is the use of awt classes (like java.awt.Color) in the text console.

workaround: apt-get install libxi6 libxtst6 libxext6 libxrender1