Hello all,
hope you had good start into 2011.
ABCL via JSR-223 is almost perfect now, but I have two things which do not work perfectly:
A) How to handle path names with spaces?
When my Java application is installed in a path with spaces (which should be no problem nowadays in 2011), I receive the following error when the ABCL engine is created:
ERROR placeholder called with arguments: #<ERROR {590510}> "Failed to find loadable system file in boot classpath 'jar:file:/D:/Programme/MH%20AeroTools/PROPPY/bin/languages/abcl.jar!/org/armedbear/lisp/boot.lisp'"
The spaces have been encoded by "%20", but obviously ABCL does not understand this boot path.
B) How to redirect I/O of the script engine? If I want to use a scripting engine in my application, the user may make mistakes. OK. For this purpose I have to 1) catch errors in Java, which works by placing the following two lines into "abcl-script-config.lisp" (in-package :abcl-script) (setq *use-throwing-debugger* nil)
2) catch standard error and standatd output. While JSR provides an interface for this vi "setWriter" and "setErrorWriter", I discovered that most JSR-223 engines do not implement this correctly. So I resorted to redirect the system streams via "System.setOut" and "System.setErr", which worked for all JSR-223 implementations so far ... except ABCL. I always reveive error mesages, as well as the initialization message (...ABCL: configured ) on standard output, possibly bypassing the system streams?
So how can I capture errors? Is t possible to rediredt errro and output (e.g.of print) to the standard output and standard error streams of the Java system? Maybe there is some extra initialization needed in ABCL to do this in case of the JSR-223 engine.
Thanks for listening, Martin