I have the following code (it doesn't require graphics environment to run): (define-alias Font java.awt.Font) (define-alias InputStream java.io.InputStream) (define ClassLoader ::java.lang.ClassLoader (java.lang.ClassLoader:getSystemClassLoader)) (define the-graphics-environment ::parameter[java.awt.GraphicsEnvironment] (make-parameter (invoke-static java.awt.GraphicsEnvironment 'getLocalGraphicsEnvironment))) (define (load-font path::String #!key (size ::float 12.0)) (let* ((font-source ::InputStream (ClassLoader:getResourceAsStream path)) (font ::Font (Font:createFont Font:TRUETYPE_FONT font-source))) (invoke (the-graphics-environment) 'registerFont font) (font:deriveFont size))) (define-constant Basic-Regular (load-font "assets/Basic-Regular.otf" size: 20) The Basic-Regular.orf file is present in the assets directory, located in the same directory as the above file (that I called font-test.scm. When I run the code with $ kawa -f font-test.scm it behaves well. But when I instead use $ java -jar /path/to/kawa.jar -f font-test.scm or $ java -cp /path/to/kawa.jar kawa.repl -f font-test.scm I get the following error: java.io.IOException: Problem reading font data. at java.desktop/java.awt.Font.createFont0(Font.java:1208) at java.desktop/java.awt.Font.createFont(Font.java:1076) at atInteractiveLevel$Mn8.loadFont$check(font-test.scm:21) at gnu.mapping.CallContext.runUntilValue(CallContext.java:656) at atInteractiveLevel$Mn9.run(font-test.scm:27) at gnu.expr.ModuleExp.evalModule2(ModuleExp.java:290) at kawa.Shell.run(Shell.java:300) at kawa.Shell.runFile(Shell.java:562) at kawa.Shell.runFileOrClass(Shell.java:485) at kawa.repl.processArgs(repl.java:298) at kawa.repl.main(repl.java:830) I even went so far to modify the `which kawa` script by inserting "set -x" in the first line following the she-bang: + KAWALIB=/data/data/com.termux/files/home/usr/share/kawa/lib/kawa.jar + CLASSPATH=/data/data/com.termux/files/home/usr/share/kawa/lib/kawa.jar:/data/data/com.termux/files/usr/share/java/android.jar: + export CLASSPATH + test -n /data/data/com.termux/files/usr/opt/openjdk + JAVA=/data/data/com.termux/files/usr/opt/openjdk/bin/java + JVM_FLAGS= + exec /data/data/com.termux/files/usr/opt/openjdk/bin/java -Dkawa.command.line=/data/data/com.termux/files/home/usr/bin/kawa -f font-test.scm -Dkawa.command.pid=20316 -Dkawa.home=/data/data/com.termux/files/home/usr/share/kawa kawa.repl -f font-test.scm So - in orded to minimize the differences, I typed the following incantation: $ KAWALIB=/data/data/com.termux/files/home/usr/share/kawa/lib/kawa.jar CLASSPATH=/data/data/com.termux/files/home/usr/share/kawa/lib/kawa.jar /data/data/com.termux/files/usr/opt/openjdk/bin/java -Dkawa.command.line="/data/data/com.termux/files/home/usr/bin/kawa -f font-test.scm" -Dkawa.home=/data/data/com.termux/files/home/usr/share/kawa kawa.repl -f font-test.scm But that still doesn't work. Does anyone know what could be the difference between these two runtime environments? (I checked, and they both report the same value of (current-path))