I ran the following on abcl 1.4 on windows 10 with Java 1.8.0_112 with
--noinint.
I test uiop:run-program like this:
(uiop/run-program:run-program '("where.exe" "java.exe") :output :string)
It works fine with asdf-3.1.7. If I load 3-1.7.43, it works only on the
second try of a session.
Session transcript with 3.1.7:
CL-USER(5): (load "asdf-3.1.7.lisp")
T
CL-USER(6): (uiop/run-program:run-program '("where.exe" "java.exe")
:output :string)
"C:\\ProgramData\\Oracle\\Java\\javapath\\java.exe
"
NIL
0
If I load 3-1.7.43, it works only on the second try of a session.
Here is a synopsis of doing run-program twice:
CL-USER(2): (uiop/run-program:run-program '("where.exe" "java.exe") :output
:string)
Error loading
jar:file:C:/mv-program-files/abcl-bin-1.4.0/abcl.jar!/org/armedbear/lisp/run-program.abcl
at line 166 (offset 8688)
#<THREAD "interpreter" {34D8B89D}>: Debugger invoked on condition of type
ERROR
Class not found: java.lang.UNIXProcess
Restarts:
0: TOP-LEVEL Return to top level.
[1] SYS(3):
Pressing `0' results in a huge java stack:
java.lang.ExceptionInInitializerError
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown
Source)
at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
...
at org.armedbear.lisp.LispThread.execute(LispThread.java:798)
at org.armedbear.lisp.Interpreter.run(Interpreter.java:361)
at org.armedbear.lisp.Main$1.run(Main.java:48)
at java.lang.Thread.run(Unknown Source)
Caused by: org.armedbear.lisp.Go
Error loading
jar:file:C:/mv-program-files/abcl-bin-1.4.0/abcl.jar!/org/armedbear/lisp/run-program.abcl
at line 166 (offset 8688)
#<THREAD "interpreter" {34D8B89D}>: Debugger invoked on condition of type
ERROR
Compiled function can't be loaded: org.armedbear.lisp.run_program_49 from
org.armedbear.lisp.Pathname@3027289e
Restarts:
0: TOP-LEVEL Return to top level.
Pressing `0' brings be back to the top level from which I try again run
program, this time with success.
[1] SYS(4): 0
CL-USER(5): (uiop/run-program:run-program '("where.exe" "java.exe") :output
:string)
"C:\\ProgramData\\Oracle\\Java\\javapath\\java.exe
"
NIL
0
CL-USER(6):