Index: src/org/armedbear/lisp/MemoryClassLoader.java =================================================================== --- src/org/armedbear/lisp/MemoryClassLoader.java (revision 14361) +++ src/org/armedbear/lisp/MemoryClassLoader.java (working copy) @@ -52,6 +52,11 @@ this.internalNamePrefix = internalNamePrefix; } + public MemoryClassLoader(JavaClassLoader parent) { + super(parent); + this.internalNamePrefix = ""; + } + @Override protected Class loadClass(String name, boolean resolve) throws ClassNotFoundException { Index: src/org/armedbear/lisp/JavaClassLoader.java =================================================================== --- src/org/armedbear/lisp/JavaClassLoader.java (revision 14361) +++ src/org/armedbear/lisp/JavaClassLoader.java (working copy) @@ -123,6 +123,10 @@ public JavaClassLoader(ClassLoader parent) { super(new URL[] {}, parent); } + + public JavaClassLoader(JavaClassLoader parent) { + super(new URL[] {}, (ClassLoader)parent); + } public JavaClassLoader(URL[] classpath, ClassLoader parent) { super(classpath, parent); Index: src/org/armedbear/lisp/runtime-class.lisp =================================================================== --- src/org/armedbear/lisp/runtime-class.lisp (revision 14361) +++ src/org/armedbear/lisp/runtime-class.lisp (working copy) @@ -35,9 +35,10 @@ Field definitions are lists of the form (field-name type &key modifiers annotations)." (declare (ignorable superclass interfaces constructors methods fields access-flags annotations)) - (let ((stream (sys::%make-byte-array-output-stream)) - ;;TODO provide constructor in MemoryClassLoader - (memory-class-loader (java:jnew "org.armedbear.lisp.MemoryClassLoader" ""))) + (let* ((stream (sys::%make-byte-array-output-stream)) + ;;TODO provide constructor in MemoryClassLoader + (current-class-loader (java:get-current-classloader)) + (memory-class-loader (java:jnew "org.armedbear.lisp.MemoryClassLoader" current-class-loader))) (multiple-value-bind (class-file method-implementation-fields) (apply #'java::%jnew-runtime-class class-name stream args) (sys::put-memory-function memory-class-loader @@ -297,4 +298,4 @@ (list "bar" :int '("java.lang.Object") (lambda (this that) (print (list this that)) 23)))) -(provide "RUNTIME-CLASS") \ No newline at end of file +(provide "RUNTIME-CLASS")