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