Hi Piotr,

Yes, the limitation is how the Java classpath works.  If you AOT your app,
you need to AOT compile other Clojure code your app uses.

See e.g.
http://dev.clojure.org/jira/browse/CLJ-1544?focusedCommentId=43558&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-43558

Cheers,
Stu

On Wed, Oct 12, 2016 at 2:22 PM, Piotr Bzdyl <pi...@bzdyl.net> wrote:

> Hello,
>
> I am trying to solve an issue in my project where I have the following
> setup. My application modules are AOT-compiled into several jars and then
> packaged with their 3rd party dependencies into an uberjar. As a result my
> uberjar contains my project's namespaces compiled to class files and
> dependencies (in this case clojure.java.jdbc) source clj files.
>
> When I try to start the application it fails with the following
> stacktrace. Is there any limitation that prevents me running AOT-compiled
> namespaces using other namespaces available as clj on classpath?
>
> java.lang.reflect.InvocationTargetException: null
>    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
> ~[na:1.8.0_102]
>    at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
> ~[na:1.8.0_102]
>    at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  ~[na:1.8.0_102]
>    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_102]
>    at com.example.Launcher$ThreadLauncher.run(Launcher.java:42) ~[na:na]
>    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_102]
> Caused by: java.lang.NoClassDefFoundError: clojure/java/jdbc/Connectable
>    at com.example.db.common.database__init.load(Unknown Source) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at com.example.db.common.database__init.<clinit>(Unknown Source) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at java.lang.Class.forName0(Native Method) ~[na:1.8.0_102]
>    at java.lang.Class.forName(Class.java:348) ~[na:1.8.0_102]
>    at clojure.lang.RT.classForName(RT.java:2154) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RT.classForName(RT.java:2163) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RT.loadClassForName(RT.java:2182) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RT.load(RT.java:436) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RT.load(RT.java:412) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$load$fn__5448.invoke(core.clj:5866) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$load.doInvoke(core.clj:5865) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RestFn.invoke(RestFn.java:408) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$load_one.invoke(core.clj:5671) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$load_lib$fn__5397.invoke(core.clj:5711) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$load_lib.doInvoke(core.clj:5710) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RestFn.applyTo(RestFn.java:142) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$apply.invoke(core.clj:632) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$load_libs.doInvoke(core.clj:5749) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RestFn.applyTo(RestFn.java:137) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$apply.invoke(core.clj:632) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$require.doInvoke(core.clj:5832) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RestFn.invoke(RestFn.java:421) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at 
> com.example.db.auth.password$loading__5340__auto____1250.invoke(password.clj:1)
>  ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at com.example.db.auth.password__init.load(Unknown Source) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at com.example.db.auth.password__init.<clinit>(Unknown Source) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at java.lang.Class.forName0(Native Method) ~[na:1.8.0_102]
>    at java.lang.Class.forName(Class.java:348) ~[na:1.8.0_102]
>    at clojure.lang.RT.classForName(RT.java:2154) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RT.classForName(RT.java:2163) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RT.loadClassForName(RT.java:2182) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RT.load(RT.java:436) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RT.load(RT.java:412) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$load$fn__5448.invoke(core.clj:5866) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$load.doInvoke(core.clj:5865) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RestFn.invoke(RestFn.java:408) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$load_one.invoke(core.clj:5671) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$load_lib$fn__5397.invoke(core.clj:5711) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$load_lib.doInvoke(core.clj:5710) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RestFn.applyTo(RestFn.java:142) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$apply.invoke(core.clj:632) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$load_libs.doInvoke(core.clj:5749) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RestFn.applyTo(RestFn.java:137) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$apply.invoke(core.clj:634) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$use.doInvoke(core.clj:5843) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RestFn.invoke(RestFn.java:436) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at com.example.db.auth.user$loading__5340__auto____1248.invoke(user.clj:1) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at com.example.db.auth.user__init.load(Unknown Source) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at com.example.db.auth.user__init.<clinit>(Unknown Source) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at java.lang.Class.forName0(Native Method) ~[na:1.8.0_102]
>    at java.lang.Class.forName(Class.java:348) ~[na:1.8.0_102]
>    at clojure.lang.RT.classForName(RT.java:2154) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RT.classForName(RT.java:2163) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RT.loadClassForName(RT.java:2182) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RT.load(RT.java:436) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RT.load(RT.java:412) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$load$fn__5448.invoke(core.clj:5866) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$load.doInvoke(core.clj:5865) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RestFn.invoke(RestFn.java:408) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$load_one.invoke(core.clj:5671) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$load_lib$fn__5397.invoke(core.clj:5711) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$load_lib.doInvoke(core.clj:5710) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RestFn.applyTo(RestFn.java:142) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$apply.invoke(core.clj:632) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$load_libs.doInvoke(core.clj:5753) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RestFn.applyTo(RestFn.java:137) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$apply.invoke(core.clj:632) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$require.doInvoke(core.clj:5832) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RestFn.invoke(RestFn.java:436) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at com.example.db.auth.init$loading__5340__auto____1246.invoke(init.clj:1) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at com.example.db.auth.init__init.load(Unknown Source) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at com.example.db.auth.init__init.<clinit>(Unknown Source) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at java.lang.Class.forName0(Native Method) ~[na:1.8.0_102]
>    at java.lang.Class.forName(Class.java:348) ~[na:1.8.0_102]
>    at clojure.lang.RT.classForName(RT.java:2154) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RT.classForName(RT.java:2163) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RT.loadClassForName(RT.java:2182) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RT.load(RT.java:436) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RT.load(RT.java:412) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$load$fn__5448.invoke(core.clj:5866) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$load.doInvoke(core.clj:5865) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RestFn.invoke(RestFn.java:408) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$load_one.invoke(core.clj:5671) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$load_lib$fn__5397.invoke(core.clj:5711) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$load_lib.doInvoke(core.clj:5710) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RestFn.applyTo(RestFn.java:142) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$apply.invoke(core.clj:632) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$load_libs.doInvoke(core.clj:5749) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RestFn.applyTo(RestFn.java:137) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$apply.invoke(core.clj:632) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.core$require.doInvoke(core.clj:5832) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RestFn.invoke(RestFn.java:408) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at 
> com.example.services.activator$register_services.invoke(activator.clj:61) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at com.example.services.activator$startup.invoke(activator.clj:131) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at com.example.services.activator$_main.doInvoke(activator.clj:139) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RestFn.invoke(RestFn.java:397) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.AFn.applyToHelper(AFn.java:152) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at clojure.lang.RestFn.applyTo(RestFn.java:132) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    at com.example.services.activator.main(Unknown Source) 
> ~[example-2.5.0-SNAPSHOT-standalone.jar:na]
>    ... 6 common frames omitted
> Caused by: java.lang.ClassNotFoundException: clojure.java.jdbc.Connectable
>    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
> ~[na:1.8.0_102]
>    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_102]
>    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_102]
>    ... 104 common frames omitted
>
>
> Best regards,
> Piotr
>
> --
> 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.
>

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

Reply via email to