fusesource / jansi

Jansi is a small java library that allows you to use ANSI escape sequences to format your console output which works even on windows.
http://fusesource.github.io/jansi/
Apache License 2.0
1.11k stars 140 forks source link

Improve error reporting when the tmp dir has the noexec flag #193

Closed gnodet closed 2 years ago

gnodet commented 3 years ago

See https://github.com/mvndaemon/mvnd/issues/341#issuecomment-767421298 The Jansi 1.x messages were more helpful, see https://issues.apache.org/jira/browse/KARAF-4690

gnodet commented 3 years ago

When running with a noexec /tmp dir:

➜  jansi git:(master) docker run -ti --tmpfs /tmp:rw,noexec,nosuid,size=2g --mount type=bind,source="$(pwd)",target=/app adoptopenjdk/openjdk11 java -jar /app/target/jansi-2.2.1-SNAPSHOT.jar
Jansi 2.2.1-SNAPSHOT

library.jansi.path= 
library.jansi.version= 
Failed to load native library:jansi-2.2.1-acca4c630d6ba382-libjansi.so. osinfo: Linux/x86_64
java.lang.UnsatisfiedLinkError: /tmp/jansi-2.2.1-acca4c630d6ba382-libjansi.so: /tmp/jansi-2.2.1-acca4c630d6ba382-libjansi.so: failed to map segment from shared object
Exception in thread "main" java.lang.RuntimeException: Unable to load jansi native library
    at org.fusesource.jansi.internal.JansiLoader.initialize(JansiLoader.java:62)
    at org.fusesource.jansi.AnsiMain.main(AnsiMain.java:60)
Caused by: java.lang.Exception: No native library found for os.name=Linux, os.arch=x86_64, paths=[/org/fusesource/jansi/internal/native/Linux/x86_64:/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib]
    at org.fusesource.jansi.internal.JansiLoader.loadJansiNativeLibrary(JansiLoader.java:333)
    at org.fusesource.jansi.internal.JansiLoader.initialize(JansiLoader.java:60)
    ... 1 more
➜  jansi git:(master)