LightTable / Clojure

Light Table Clojure language plugin
MIT License
99 stars 51 forks source link

A standalone jar that starts nREPL server with lighttable.nrepl.handler/lighttable-ops as handler can not be executed. #56

Closed kohyama closed 8 years ago

kohyama commented 8 years ago

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
kohyama commented 8 years ago

It seems to be caused by CLJ-1544. http://dev.clojure.org/jira/browse/CLJ-1544 So what should I do in this case?

rundis commented 8 years ago

You could try building lein-light-nrepl from source yourself (pending a 0.2.0 release of the clojure plugin)

kohyama commented 8 years ago

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.