I believe the error message is because there is no apply() method that takes no arguments, and (.. node getLoad apply this ) is trying to do this (in java): node.getLoad().apply().this()

I think you want (.. node getLoad (apply this))

Cheers, Jay

On May 23, 2010, at 4:39 PM, Timothy Washington wrote:

Hi there, I'm trying to get Java's 'this' passed as a variable to clojure's sugared Java integration. All's fine until the end of line 43. I've tried 'this' and (proxy-super), on a lamb, but no dice.

42 (if (not= (. node getLoad ) nil) ;; Java equivalent - if(node.getLoad() != null) { node.getLoad().apply(this); }
 43                (.. node getLoad apply this )
 44             )


The errors I get are an InvocationTargetException caused by an IllegalArgumentException .

Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun .reflect .NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun .reflect .DelegatingMethodAccessorImpl .invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:592)
    at jline.ConsoleRunner.main(ConsoleRunner.java:69)
Caused by: java.lang.IllegalArgumentException: No matching field found: apply for class com.interrupt.bookkeeping.cc.node.TLoad (bkell.clj:0)
    at clojure.lang.Compiler.eval(Compiler.java:4658)
    at clojure.lang.Compiler.load(Compiler.java:4972)
    at clojure.lang.Compiler.loadFile(Compiler.java:4939)
    at clojure.main$load_script__7405.invoke(main.clj:213)
    at clojure.main$script_opt__7442.invoke(main.clj:265)
    at clojure.main$main__7466.doInvoke(main.clj:346)
    at clojure.lang.RestFn.invoke(RestFn.java:413)
    at clojure.lang.Var.invoke(Var.java:359)
    at clojure.lang.AFn.applyToHelper(AFn.java:173)
    at clojure.lang.Var.applyTo(Var.java:476)
    at clojure.main.main(main.java:37)
    ... 5 more
Caused by: java.lang.IllegalArgumentException: No matching field found: apply for class com.interrupt.bookkeeping.cc.node.TLoad


Is there a way to get this done?


Thanks all
Tim


--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to