Hi, I tried to run foil under clisp on a windows machine.
When I instantiate anything (e.g. a java.util.Date) I get
the following exception:
[44]> (setf *fvm* (make-instance 'foreign-vm
:stream
(socket-connect 13581)))
#<FOREIGN-VM #x19F9289D>
[45]> (date.new)
*** - java.lang.Exception: unsupported macro sequence
'1'
at com.richhickey.foil.MessageReader.
readMacro(MessageReader.java:113)
at com.richhickey.foil.MessageReader.
readDelimitedList(MessageReader.java:81)
at com.richhickey.foil.MessageReader.
readSexpr(MessageReader.java:45)
at com.richhickey.foil.MessageReader.
readMessage(MessageReader.java:39)
at com.richhickey.foil.RuntimeServer.
processMessages(RuntimeServer.java:68)
at com.richhickey.foil.RuntimeServer.
processMessagesOnSocket(RuntimeServer.java:391)
at com.richhickey.foil.RuntimeServer.
main(RuntimeServer.java:429)
Break 1 [46]>
Any help with this problem is appreciated.
Many thanks in advance. If you have any further
questions please do not hesitate to contact me.
Best regards
J Kalsbach
On the java side the RuntimeServer sees the following
forms in its processMessages method:
(:TREF "java.util.Date")
(:NEW #1=#}1. 1. 0. NIL)
Logged In: YES
user_id=803844
There was a thread on this on the mailing list:
http://sourceforge.net/mailarchive/message.php?msg_id=11484644
Logged In: YES
user_id=1279756
Hi, I patched send-message to
(defun send-message (&rest args)
(with-standard-io-syntax
(let* ((send-stream (get-fvm-stream))
(free-list (fvm-free-list *fvm*)))
(when free-list
(setf (fvm-free-list *fvm*) nil)
(free-frefs send-stream free-list))
(format send-stream "~A" args)
(force-output send-stream)
(process-return-message))))
as recommended. Now there is another error.
Executing
(load "./foil")
(load "./java-util")
(use-package :foil)
(use-package :ext)
(use-package "java.util")
(setf *fvm* (make-instance 'foreign-vm
:stream
(socket-connect 13580)))
(date.new)
gives
[1]> (setf (default-directory) "c:/software/foil")
"c:/software/foil"
[2]> (load "cfoil")
;; Loading file C:\software\foil\cfoil.lisp ...
;; Loading file C:\software\foil\foil.fas ...
;; Loaded file C:\software\foil\foil.fas
;; Loading file C:\software\foil\java-util.fas ...
;; Loaded file C:\software\foil\java-util.fas
*** - java.lang.Exception: unsupported message
at com.richhickey.foil.RuntimeServer.
processMessages(RuntimeServer.java:249)
at com.richhickey.foil.RuntimeServer.
processMessagesOnSocket(RuntimeServer.java:391)
at com.richhickey.foil.RuntimeServer.main(RuntimeServer.
java:429)
Break 1 [3]>
on the repl and
c:\software\foil>java -jar ./foil.jar 13580
java -jar ./foil.jar 13580
(TREF java.util.Date)
on the java side. The ":" before TREF seems to be missing.
Any clues? Many thanks in advance!
Regards,
J Kalsbach