Basically, the issue is:

When a deftype/defrecord named class is used from Java, its containing
namespace is not loaded automatically, so even calling a function in
the same namespace will raise an exception like this:

java.lang.IllegalStateException: Attempting to call unbound fn ...

An example:

(ns my-ns.core)

(defn test-func []
  )

(defrecord testrec []
   ITestProtocol
   (init [this]
      (test-func)))

In Java side, the below will fail:

rec = new testrec();
rec.init();

with an exception raised
java.lang.IllegalStateException: Attempting to call unbound fn #'my-
ns.core/test-func.

This issue was raised before about 1 and half year ago here:
https://groups.google.com/forum/#!msg/clojure-dev/4CtSVWcD15A/shpMuyjMpxsJ

And a work-around is provided, like here:
http://stackoverflow.com/questions/10953621/clojure-deftype-calling-function-in-the-same-namespace-throws-java-lang-illegal

It took me hours to figure out the problem as everything works fine in
REPL itself.

Does anybody know if this issue will be addressed? Thank you.

-- 
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