This is the mail archive of the kawa@sourceware.org mailing list for the Kawa project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Question regarding dynamic jar loading


I have the following sample code:
(define (load-jar jar)
? (display jar)
? (newline)
? (try-catch
?? (let*
??? ((sysLoader (java.lang.ClassLoader:getSystemClassLoader))
????? (urls (java.net.URLClassLoader:getURLs sysLoader))
????? (u (java.io.File:toURL (java.io.File:new jar)))
????? (sysclass (java.net.URLClassLoader:.class))
????? (method 
??????? (java.lang.Class:getDeclaredMethod sysclass 
????????? "addURL" (make <java.lang.Class[]> length: 1 (java.net.URL:.class)))))
??? (java.lang.reflect.AccessibleObject:setAccessible method #t)
??? (java.lang.reflect.Method:invoke method sysLoader (make <java.lang.Object[]> length: 1 u))
??? #t)
?? (ex <java.lang.Exception>
??????? "Exception Caught")))

(load-jar "test.jar")
(define a (test.Test:new 10))
(display (test.Test:test2 a))
(display (test.Test:test1))

This code works against the 1.9.1 build from source.

But, when I attempt to run against HEAD of trunk (after building) I get the following error:
test-kawa.scm:15:5: internal compile error - caught java.lang.Error: popType called with empty stack atInteractiveLevel$1.loadJar(java.lang.Object)java.lang.Object
??? gnu.bytecode.CodeAttr.popType(CodeAttr.java:320)
??? gnu.bytecode.CodeAttr.emitInvokeMethod(CodeAttr.java:1321)
??? gnu.expr.PrimProcedure.compileInvoke(PrimProcedure.java:543)
??? gnu.expr.PrimProcedure.compile(PrimProcedure.java:525)
??? gnu.expr.PrimProcedure.compile(PrimProcedure.java:494)
??? gnu.expr.ApplyExp.compile(ApplyExp.java:171)
??? gnu.expr.ApplyExp.compile(ApplyExp.java:110)
??? gnu.expr.Expression.compileWithPosition(Expression.java:131)
??? gnu.expr.BeginExp.compile(BeginExp.java:142)
??? gnu.expr.Expression.compileNotePosition(Expression.java:157)
??? gnu.expr.Expression.compileWithPosition(Expression.java:128)
??? gnu.expr.LetExp.compile(LetExp.java:190)
??? gnu.expr.Expression.compileNotePosition(Expression.java:157)
??? gnu.expr.Expression.compileWithPosition(Expression.java:128)
??? gnu.expr.LetExp.compile(LetExp.java:190)
??? gnu.expr.Expression.compileNotePosition(Expression.java:157)
??? gnu.expr.Expression.compileWithPosition(Expression.java:128)
??? gnu.expr.LetExp.compile(LetExp.java:190)
??? gnu.expr.Expression.compileNotePosition(Expression.java:157)
??? gnu.expr.Expression.compileWithPosition(Expression.java:128)
??? gnu.expr.LetExp.compile(LetExp.java:190)
??? gnu.expr.Expression.compileNotePosition(Expression.java:157)
??? gnu.expr.Expression.compileWithPosition(Expression.java:128)
??? gnu.expr.LetExp.compile(LetExp.java:190)
??? gnu.expr.Expression.compileNotePosition(Expression.java:157)
??? gnu.expr.Expression.compileWithPosition(Expression.java:128)
??? gnu.expr.TryExp.compile(TryExp.java:71)
??? gnu.expr.Expression.compileWithPosition(Expression.java:131)
??? gnu.expr.BeginExp.compile(BeginExp.java:143)
??? gnu.expr.Expression.compileNotePosition(Expression.java:157)
??? gnu.expr.Expression.compileWithPosition(Expression.java:143)
??? gnu.expr.LambdaExp.compileBody(LambdaExp.java:1597)
??? gnu.expr.LambdaExp.compileAsMethod(LambdaExp.java:1574)
??? gnu.expr.LambdaExp.compileSetField(LambdaExp.java:639)
??? gnu.expr.SetExp.compile(SetExp.java:170)
??? gnu.expr.Expression.compileNotePosition(Expression.java:157)
??? gnu.expr.Expression.compileWithPosition(Expression.java:143)
??? gnu.expr.LambdaExp.compileBody(LambdaExp.java:1597)
??? gnu.expr.Compilation.generateBytecode(Compilation.java:2010)
??? gnu.expr.Compilation.process(Compilation.java:1884)
??? gnu.expr.ModuleInfo.loadByStages(ModuleInfo.java:315)
??? gnu.expr.ModuleExp.evalToClass(ModuleExp.java:73)
??? gnu.expr.ModuleExp.evalModule(ModuleExp.java:228)
??? kawa.Shell.run(Shell.java:275)
??? kawa.standard.load.loadSource(load.java:115)
??? kawa.standard.load.apply(load.java:236)
?? ?kawa.standard.load.apply(load.java:179)
??? kawa.Shell.runFile(Shell.java:357)
??? kawa.repl.main(repl.java:863)

Somewhere between revisions 6066 and 6139 it seems to go awry.? Anybody have any ideas?


From,
Beau Croteau
Beau.croteau@ca.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]