Hm, it's been really long a go when I've last dealt with EE container but could you tell how does your module exports are set in module definition? Exports are I believe what defines what is exposed to the "outside" world. Furthermore, it might be that you should also add module imports in your app so it is able to see exposed classes/packages.
I can't tell for sure this could or could not help but that is something what I could remember of. On Wednesday, February 6, 2019 at 10:40:39 PM UTC+1, henrik42 wrote: > > Hi, > > I'm working on a "proxying JDBC driver" in Clojure [1]. Everything is > working fine. But I had one problem with the way Clojure > (i.e. clojure.lang.RT) manages its classloader. > > When Wildfly loads my UBERJAR which contains Clojure and > loads/instanciates my gen-class `buttle.jdbc.Driver` then its static > initializer will load `clojure.lang.RT`. At this point the current > thread's context classloader (TCCL; which is put into place by > Wildfly) does NOT point to the one that is loading my code and the > TCCL in-fact does not "see" my classes. > > So when Clojure/RT then tries to find `clojure/core.clj` it fails > because Clojure uses the TCCL for loading [2]. I could try to set > `clojure.core/*use-context-classloader*` to false but this leads to a > chicken-egg-problem since for doing that, `clojure.lang/RT` would have > to be loaded in the first place. > > So my question is: is there a nice way out of this? > > The workaround I came up with was to compile a Java class [3] which is > the super class of my gen class [4]. And since static initializers are > called in order super-class->derived-class the static initializer of > the super-class is used to set the TCCL to the one that loads my code > base. After that Clojure finds clojure/core.clj without problems. > > Any ideas on how to do without this hack? > > Henrik > > [1] https://github.com/henrik42/buttle/ > [2] > https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/RT.java#L2174 > [3] > https://github.com/henrik42/buttle/blob/master/java/buttle/SetContextClassLoaderInStaticInitializer.java > [4] > https://github.com/henrik42/buttle/blob/master/src/buttle/driver.clj#L29 > > -- 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 unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.