ClassNotFoundException: io.aviso.repl in pretty 0.1.20
timgilbert opened this issue · comments
Hi! I'm trying to setup pretty 0.1.20 as a lein plugin as described here in my Clojure 1.7 project. I added both the :dependencies
and :plugins
entries as [io.aviso/pretty "0.1.20"]
, but when I run lein test
I see the following stack trace:
Exception in thread "main" java.lang.ClassNotFoundException: io.aviso.repl, compiling:(/private/var/folders/x3/kzv3bbmx1rsfrpg4zx9v07rm0000gq/T/form-init32875118242980433.clj:1:123)
at clojure.lang.Compiler.load(Compiler.java:7239)
at clojure.lang.Compiler.loadFile(Compiler.java:7165)
at clojure.main$load_script.invoke(main.clj:275)
at clojure.main$init_opt.invoke(main.clj:280)
at clojure.main$initialize.invoke(main.clj:308)
at clojure.main$null_opt.invoke(main.clj:343)
at clojure.main$main.doInvoke(main.clj:421)
at clojure.lang.RestFn.invoke(RestFn.java:421)
at clojure.lang.Var.invoke(Var.java:383)
at clojure.lang.AFn.applyToHelper(AFn.java:156)
at clojure.lang.Var.applyTo(Var.java:700)
at clojure.main.main(main.java:37)
Caused by: java.lang.ClassNotFoundException: io.aviso.repl
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at clojure.lang.DynamicClassLoader.findClass(DynamicClassLoader.java:69)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at clojure.lang.DynamicClassLoader.loadClass(DynamicClassLoader.java:77)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
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.Compiler$HostExpr.maybeClass(Compiler.java:1017)
at clojure.lang.Compiler$HostExpr.access$600(Compiler.java:795)
at clojure.lang.Compiler.macroexpand1(Compiler.java:6662)
at clojure.lang.Compiler.macroexpand(Compiler.java:6692)
at clojure.lang.Compiler.eval(Compiler.java:6766)
at clojure.lang.Compiler.eval(Compiler.java:6771)
at clojure.lang.Compiler.load(Compiler.java:7227)
... 11 more
Tests failed.
When I use [io.aviso/pretty "0.1.19"]
instead I don't see this behavior (however, I also don't see any enhanced stack-traces during lein test
, but that seems like a different problem and I'll file a separate issue if I get the time to gather up more details). 1.18.0 also seemed to work correctly.
Oh, I should add that I'm running Leiningen 2.5.3 on Java 1.8.0_45 Java HotSpot(TM) 64-Bit Server VM
on OS/X 10.11.2, in case that's helpful.
What's in your user.clj?
Here's what I have right now. I don't have tons of time ATM but when I do I'll remove this and see if I can still reproduce the issue. Also I recently tried with 0.1.21 and still saw the error.
{:user {:plugins [[lein-try "0.4.3"]
[lein-kibit "0.1.2"]
[jonase/eastwood "0.2.2" :exclusions [org.clojure/clojure]]
[lein-hiera "0.9.5"]
[lein-collisions "0.1.4"]]
:hiera {:vertical true}}}
I've also realized that I only see this behavior when running lein test
. Running lein ring server
or lein test-refresh
work fine for me.
I am also getting this error:
$ lein test
Exception in thread "main" java.lang.ClassNotFoundException: io.aviso.repl, compiling:(/private/var/folders/xl/z_j_yt_s5z18y3zdqg24tn180000gn/T/form-init7515724856406436718.clj:1:5)
at clojure.lang.Compiler.load(Compiler.java:7391)
at clojure.lang.Compiler.loadFile(Compiler.java:7317)
at clojure.main$load_script.invokeStatic(main.clj:275)
at clojure.main$init_opt.invokeStatic(main.clj:277)
at clojure.main$init_opt.invoke(main.clj:277)
at clojure.main$initialize.invokeStatic(main.clj:308)
at clojure.main$null_opt.invokeStatic(main.clj:342)
at clojure.main$null_opt.invoke(main.clj:339)
at clojure.main$main.invokeStatic(main.clj:421)
at clojure.main$main.doInvoke(main.clj:384)
at clojure.lang.RestFn.invoke(RestFn.java:421)
at clojure.lang.Var.invoke(Var.java:383)
at clojure.lang.AFn.applyToHelper(AFn.java:156)
at clojure.lang.Var.applyTo(Var.java:700)
at clojure.main.main(main.java:37)
Caused by: java.lang.ClassNotFoundException: io.aviso.repl
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at clojure.lang.DynamicClassLoader.findClass(DynamicClassLoader.java:69)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at clojure.lang.DynamicClassLoader.loadClass(DynamicClassLoader.java:77)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at clojure.lang.RT.classForName(RT.java:2168)
at clojure.lang.RT.classForName(RT.java:2177)
at clojure.lang.Compiler$HostExpr.maybeClass(Compiler.java:1030)
at clojure.lang.Compiler.macroexpand1(Compiler.java:6807)
at clojure.lang.Compiler.macroexpand(Compiler.java:6837)
at clojure.lang.Compiler.eval(Compiler.java:6911)
at clojure.lang.Compiler.eval(Compiler.java:6916)
at clojure.lang.Compiler.load(Compiler.java:7379)
... 14 more
Tests failed.
~/.lein/profiles.clj
:
{:user {:plugins [[lein-pprint "1.1.1"]
[venantius/ultra "0.4.0"]
[com.jakemccrary/lein-test-refresh "0.12.0"]
[io.aviso/pretty "0.1.22"]
[lein-hiera "0.9.5"]]
:dependencies [[io.aviso/pretty "0.1.22"]
[pjstadig/humane-test-output "0.7.1"]]
:injections [(require 'pjstadig.humane-test-output)
(pjstadig.humane-test-output/activate!)]
:test-refresh {:notify-command ["terminal-notifier" "-title" "Tests" "-message"]}}}
You must be picking up an out-of-date version of pretty.
Ah, there it is. ultra uses an older version of pretty; you will need to contact them, or play with :exclusions to make this work.