Hi,

hopefully this is the correct list. If not please let me know.

Background:
I am trying to use abcl to generate jars to send off to a hadoop cluster for execution. The svn version of the jnew-runtime-class does not store the actual method bodies in the generated class file, but rather loads the generated class file and sets the relevant field. Here is the relevant code :

    (multiple-value-bind (class-file method-implementation-fields)
        (apply #'java::%jnew-runtime-class class-name stream args)
      (sys::put-memory-function memory-class-loader
                                class-name (sys::%get-output-stream-bytes stream))
      (let ((jclass (java:jcall "loadClass" memory-class-loader class-name)))
        (dolist (method method-implementation-fields)
          (setf (java:jfield jclass (car method)) (cdr method)))
        jclass))))



This means that the generated jar file cannot be easily used from standard java code. I would like to add some code in the static initialization block of generated class file to do something equivalent. I will have to save the lambda expression for the method and have been experimenting as follows:

(defvar *cf*)
(defvar *mif*)

(with-open-file (stream "test.class" :direction :output :element-type '(unsigned-byte 8))
  (multiple-value-bind (class-file method-implementation-field)
      (java::%jnew-runtime-class "test" stream :methods `(("forty_two_method1" :int () ,(lambda (this) 42))))
    (setf *cf* class-file)
    (setf *mif* method-implementation-field)))

(with-open-file (stream "test_forms" :direction :output)
  (dolist (m *mif*)
    (system:dump-form (list (car m) (function-lambda-expression (cdr m))) stream)))


This assumes that the lambda expression does not refer to any variable or user defined function, but perhaps the asdf-jar contrib might help here.

I was going to write the relevant code and start using it for my project, but I was wondering if I am duplicating work that others have already done or are doing and whether there are other libraries (jffli perhaps, I am not very familiar with it) that have similar functionality. Also if there are other interactions with other parts of the system that I am perhaps missing.

I would e grateful for any advice.

Archi