3
votes

A project I have been working on has suddenly started throwing exceptions when using leiningen interactive. Running "lein test" is fine, my tests run and pass. The exception only occurs using interactive:

Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at jline.ConsoleRunner.main(ConsoleRunner.java:69)
Caused by: java.lang.IllegalStateException: Can't dynamically bind non-dynamic var: leiningen.compile/eval-in-project
    at clojure.lang.Var.pushThreadBindings(Var.java:339)
    at clojure.core$push_thread_bindings.invoke(core.clj:1716)
    at leiningen.interactive$interactive.invoke(interactive.clj:75)
    at clojure.lang.Var.invoke(Var.java:401)
    at clojure.lang.AFn.applyToHelper(AFn.java:161)
    at clojure.lang.Var.applyTo(Var.java:518)
    at clojure.core$apply.invoke(core.clj:602)
    at leiningen.core$apply_task.invoke(core.clj:262)
    at leiningen.core$_main.doInvoke(core.clj:329)
    at clojure.lang.RestFn.invoke(RestFn.java:410)
    at clojure.lang.AFn.applyToHelper(AFn.java:161)
    at clojure.lang.RestFn.applyTo(RestFn.java:132)
    at clojure.core$apply.invoke(core.clj:602)
    at leiningen.core$_main.invoke(core.clj:332)
    at user$eval361.invoke(NO_SOURCE_FILE:1)
    at clojure.lang.Compiler.eval(Compiler.java:6465)
    at clojure.lang.Compiler.eval(Compiler.java:6431)
    at clojure.core$eval.invoke(core.clj:2795)
    at clojure.main$eval_opt.invoke(main.clj:296)
    at clojure.main$initialize.invoke(main.clj:315)
    at clojure.main$script_opt.invoke(main.clj:339)
    at clojure.main$main.doInvoke(main.clj:426)
    at clojure.lang.RestFn.invoke(RestFn.java:457)
    at clojure.lang.Var.invoke(Var.java:413)
    at clojure.lang.AFn.applyToHelper(AFn.java:172)
    at clojure.lang.Var.applyTo(Var.java:518)
    at clojure.main.main(main.java:37)
    ... 5 more

A different Exception is thrown when attempting to connect to the repl:

Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at jline.ConsoleRunner.main(ConsoleRunner.java:69)
Caused by: java.lang.RuntimeException: java.net.ConnectException: Connection refused
    at clojure.lang.Util.runtimeException(Util.java:165)
    at clojure.lang.Reflector.invokeConstructor(Reflector.java:193)
    at leiningen.repl$poll_repl_connection$fn__1425.invoke(repl.clj:113)
    at leiningen.repl$poll_repl_connection.invoke(repl.clj:113)
    at leiningen.repl$repl.invoke(repl.clj:153)
    at clojure.lang.Var.invoke(Var.java:401)
    at clojure.lang.AFn.applyToHelper(AFn.java:161)
    at clojure.lang.Var.applyTo(Var.java:518)
    at clojure.core$apply.invoke(core.clj:602)
    at leiningen.core$apply_task.invoke(core.clj:262)
    at leiningen.core$_main.doInvoke(core.clj:329)
    at clojure.lang.RestFn.invoke(RestFn.java:410)
    at clojure.lang.AFn.applyToHelper(AFn.java:161)
    at clojure.lang.RestFn.applyTo(RestFn.java:132)
    at clojure.core$apply.invoke(core.clj:602)
    at leiningen.core$_main.invoke(core.clj:332)
    at user$eval361.invoke(NO_SOURCE_FILE:1)
    at clojure.lang.Compiler.eval(Compiler.java:6465)
    at clojure.lang.Compiler.eval(Compiler.java:6431)
    at clojure.core$eval.invoke(core.clj:2795)
    at clojure.main$eval_opt.invoke(main.clj:296)
    at clojure.main$initialize.invoke(main.clj:315)
    at clojure.main$script_opt.invoke(main.clj:339)
    at clojure.main$main.doInvoke(main.clj:426)
    at clojure.lang.RestFn.invoke(RestFn.java:457)
    at clojure.lang.Var.invoke(Var.java:413)
    at clojure.lang.AFn.applyToHelper(AFn.java:172)
    at clojure.lang.Var.applyTo(Var.java:518)
    at clojure.main.main(main.java:37)
    ... 5 more
1
Just a suggestion, but you might want to post at least the project.clj. Another suggestion would be to pair this down in another lein new test-proj directory. My guess is something in the .lein directories got fouled up, but being a new user to lein, that's just a guess. - octopusgrabbus

1 Answers

2
votes

it looks like the real error is:

" Can't dynamically bind non-dynamic var: leiningen.compile/eval-in-project"

this is caused by one of the changes in 1.3 that makes vars much faster but requires the ones that will be dynamically rebound to be marked with ^dynamic. the version of lein you are using is not compatable with the version of clojure you are using. When I encountered this problem on monday it went away after running:

lein upgrade