A standalone jar that starts nREPL server with lighttable.nrepl.handler/lighttable-ops as handler can not be executed.
kohyama opened this issue · comments
I have a project whose -main starts a nrepl server with '(clojure.tools.nrepl.server/start-server :handler (clojure.tools.nrepl.server/default-handler #'lighttable.nrepl.handler/lighttable-ops))`
When I run the project with lein run, it works.
But lein uberjar-ed standalone.jar can't be executed by java -jar and throws java.lang.ExceptionInInitializerError below.
I don't sure if it's a problem of lighttable.nrepl.handler.
Does anyone know what's wrong?
More details: https://gist.github.com/kohyama/1fd05f5ece19a0e50b88
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:2154)
at clojure.lang.RT.classForName(RT.java:2163)
at clojure.lang.RT.loadClassForName(RT.java:2182)
at clojure.lang.RT.load(RT.java:436)
at clojure.lang.RT.load(RT.java:412)
at clojure.core$load$fn__5448.invoke(core.clj:5866)
at clojure.core$load.doInvoke(core.clj:5865)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invoke(core.clj:5671)
at clojure.core$load_lib$fn__5397.invoke(core.clj:5711)
at clojure.core$load_lib.doInvoke(core.clj:5710)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invoke(core.clj:632)
at clojure.core$load_libs.doInvoke(core.clj:5749)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invoke(core.clj:632)
at clojure.core$require.doInvoke(core.clj:5832)
at clojure.lang.RestFn.invoke(RestFn.java:1289)
at lighttable.nrepl.handler$loading__5340__auto____777.invoke(handler.clj:1)
at lighttable.nrepl.handler__init.load(Unknown Source)
at lighttable.nrepl.handler__init.<clinit>(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at clojure.lang.RT.classForName(RT.java:2154)
at clojure.lang.RT.classForName(RT.java:2163)
at clojure.lang.RT.loadClassForName(RT.java:2182)
at clojure.lang.RT.load(RT.java:436)
at clojure.lang.RT.load(RT.java:412)
at clojure.core$load$fn__5448.invoke(core.clj:5866)
at clojure.core$load.doInvoke(core.clj:5865)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invoke(core.clj:5671)
at clojure.core$load_lib$fn__5397.invoke(core.clj:5711)
at clojure.core$load_lib.doInvoke(core.clj:5710)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invoke(core.clj:632)
at clojure.core$load_libs.doInvoke(core.clj:5749)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invoke(core.clj:632)
at clojure.core$require.doInvoke(core.clj:5832)
at clojure.lang.RestFn.invoke(RestFn.java:421)
at nltry.core$loading__5340__auto____31.invoke(core.clj:2)
at nltry.core__init.load(Unknown Source)
at nltry.core__init.<clinit>(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at clojure.lang.RT.classForName(RT.java:2154)
at clojure.lang.RT.classForName(RT.java:2163)
at clojure.lang.RT.loadClassForName(RT.java:2182)
at clojure.lang.RT.load(RT.java:436)
at clojure.lang.RT.load(RT.java:412)
at clojure.core$load$fn__5448.invoke(core.clj:5866)
at clojure.core$load.doInvoke(core.clj:5865)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.lang.Var.invoke(Var.java:379)
at nltry.core.<clinit>(Unknown Source)
Caused by: java.lang.IllegalArgumentException: No implementation of method: :make-reader of protocol: #'clojure.java.io/IOFactory found for class: nil
at clojure.core$_cache_protocol_fn.invoke(core_deftype.clj:554)
at clojure.java.io$fn__9115$G__9091__9122.invoke(io.clj:69)
at clojure.java.io$reader.doInvoke(io.clj:102)
at clojure.lang.RestFn.invoke(RestFn.java:410)
at cljs.js_deps$goog_dependencies_STAR_.invoke(js_deps.clj:214)
at clojure.lang.AFn.applyToHelper(AFn.java:152)
at clojure.lang.AFn.applyTo(AFn.java:144)
at clojure.core$apply.invoke(core.clj:630)
at clojure.core$memoize$fn__5479.doInvoke(core.clj:6082)
at clojure.lang.RestFn.invoke(RestFn.java:397)
at cljs.js_deps$js_dependency_index.invoke(js_deps.clj:233)
at cljs.env$default_compiler_env.invoke(env.clj:45)
at cljs.env$default_compiler_env.invoke(env.clj:42)
at lighttable.nrepl.cljs__init.load(Unknown Source)
at lighttable.nrepl.cljs__init.<clinit>(Unknown Source)
... 58 more
It seems to be caused by CLJ-1544.
http://dev.clojure.org/jira/browse/CLJ-1544
So what should I do in this case?
You could try building lein-light-nrepl from source yourself (pending a 0.2.0 release of the clojure plugin)
- Clone/fork https://github.com/LightTable/Clojure
cd lein-light-nrepllein with-profile production install; with-profile to ensure clojure-complete doesn't get test scope !- change your lein-light dependency to 0.2.0
Great!
It works fine with self-built 0.2.0.
Thank you so much for your comment, rundis.
I use this self-built version until the 0.2.0 release and hope the release will go well.