Closed jeroenvandijk closed 5 years ago
In order to make reader customizations I needed to hook into reader internals. Some were declared private so in order to access them I have a custom reader fork.
In the trace there is the IllegalAccessError
which likely means the compilation uses the stock version from maven. In order to fix that we would need to use the git version declared in deps.edn
like tools.deps
does.
Ah cool. I didn't recognized the error and assumed it was the reader, but then I need to improve the tools.deps integration instead. Will try again
Ok I think I've got a bit further
~> boot uberjar
Compiling 1/1 closh.zero.frontend.main...
Adding uberjar entries...
Writing project.jar...
Sifting output files...
Writing target dir(s)...
But when running there is another exception. Maybe you recognize this one too?
java -jar target/project.jar
gives
```
Exception in thread "main" java.lang.ExceptionInInitializerError
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at clojure.lang.RT.classForName(RT.java:2204)
at clojure.lang.RT.classForName(RT.java:2213)
at clojure.lang.RT.loadClassForName(RT.java:2232)
at clojure.lang.RT.load(RT.java:450)
at clojure.lang.RT.load(RT.java:426)
at clojure.core$load$fn__6548.invoke(core.clj:6046)
at clojure.core$load.invokeStatic(core.clj:6045)
at clojure.core$load.doInvoke(core.clj:6029)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invokeStatic(core.clj:5848)
at clojure.core$load_one.invoke(core.clj:5843)
at clojure.core$load_lib$fn__6493.invoke(core.clj:5888)
at clojure.core$load_lib.invokeStatic(core.clj:5887)
at clojure.core$load_lib.doInvoke(core.clj:5868)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invokeStatic(core.clj:659)
at clojure.core$load_libs.invokeStatic(core.clj:5925)
at clojure.core$load_libs.doInvoke(core.clj:5909)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invokeStatic(core.clj:659)
at clojure.core$require.invokeStatic(core.clj:5947)
at clojure.core$require.doInvoke(core.clj:5947)
at clojure.lang.RestFn.invoke(RestFn.java:457)
at closh.zero.frontend.main$loading__6434__auto____181.invoke(main.clj:1)
at closh.zero.frontend.main__init.load(Unknown Source)
at closh.zero.frontend.main__init.
</summary>
From the trace the error occurs in default_data_readers.clj where it tries to load some classes from java.util
.
Unfortunately I have no idea why it can't find those classes.
I've tried to interact with the exception e.g. by changing the locations of the import of java.util
, but no luck either. Giving up for now.
Someone else had the same issue. I've tried :quick-merge as deps option, but i get the same error.
@dundalek I think I found the main uberjar issue. Tools.reader was included multiple times (and this caused a weird conflict). After excluding tools.reader at different spots things seems to be working: https://github.com/jeroenvandijk/closh/pull/2 I'm not sure though what the jar should do. I'm missing something here :) Maybe you can see what's not working yet?
Awesome! I will try to look into the prompt issue.
@jeroenvandijk I was able to fix the prompt issues, rebased your "hack" branch and merged in. This is so great, thank you so much for the help!
@dundalek Thank you for the actual work ;-) Glad to contribute a tiny bit! And sorry for the messy commits..
I tried to create an uberjar with boot (+ deps.edn) and I think I came further than the camada version, but still some issue with reader.clj:
(Assuming you have
boot-clj
installed [version 2.8.1 in my case])