I got a failure to resolve cemerick.piggieback/wrap-cljs-repl
.
My environment is OS X, running the Shrimp project attempting to piggieback Ambly within Cursive's REPL.
Here is the stacktrace I got:
Starting nREPL server...
/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home/bin/java -Dfile.encoding=UTF-8 -Dclojure.compile.path=/Users/mfikes/Documents/Projects/shrimp/ClojureScript/target/classes -Dshrimp.version=0.1.0-SNAPSHOT -Dclojure.debug=false -Didea.launcher.port=7532 "-Didea.launcher.bin.path=/Applications/IntelliJ IDEA 14.app/Contents/bin" -classpath "/Users/mfikes/Documents/Projects/shrimp/ClojureScript/test:/Users/mfikes/Documents/Projects/shrimp/ClojureScript/src:/Users/mfikes/Documents/Projects/shrimp/ClojureScript/dev-resources:/Users/mfikes/Documents/Projects/shrimp/ClojureScript/resources:/Users/mfikes/Documents/Projects/shrimp/ClojureScript/target/classes:/Users/mfikes/.m2/repository/com/google/guava/guava/18.0/guava-18.0.jar:/Users/mfikes/.m2/repository/org/clojure/tools.analyzer/0.1.0-beta12/tools.analyzer-0.1.0-beta12.jar:/Users/mfikes/.m2/repository/com/google/javascript/closure-compiler-externs/v20150126/closure-compiler-externs-v20150126.jar:/Users/mfikes/.m2/repository/clojure-complete/clojure-complete/0.2.3/clojure-complete-0.2.3.jar:/Users/mfikes/.m2/repository/org/clojure/tools.analyzer.jvm/0.1.0-beta12/tools.analyzer.jvm-0.1.0-beta12.jar:/Users/mfikes/.m2/repository/org/clojure/tools.reader/0.8.16/tools.reader-0.8.16.jar:/Users/mfikes/.m2/repository/org/clojure/core.cache/0.6.3/core.cache-0.6.3.jar:/Users/mfikes/.m2/repository/org/clojure/google-closure-library-third-party/0.0-20140718-946a7d39/google-closure-library-third-party-0.0-20140718-946a7d39.jar:/Users/mfikes/.m2/repository/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar:/Users/mfikes/.m2/repository/args4j/args4j/2.0.26/args4j-2.0.26.jar:/Users/mfikes/.m2/repository/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.jar:/Users/mfikes/.m2/repository/org/clojure/google-closure-library/0.0-20140718-946a7d39/google-closure-library-0.0-20140718-946a7d39.jar:/Users/mfikes/.m2/repository/org/ow2/asm/asm-all/4.1/asm-all-4.1.jar:/Users/mfikes/.m2/repository/org/clojure/core.memoize/0.5.6/core.memoize-0.5.6.jar:/Users/mfikes/.m2/repository/org/omcljs/ambly/0.1.0-SNAPSHOT/ambly-0.1.0-SNAPSHOT.jar:/Users/mfikes/.m2/repository/com/cemerick/piggieback/0.2.0-SNAPSHOT/piggieback-0.2.0-SNAPSHOT.jar:/Users/mfikes/.m2/repository/com/google/code/gson/gson/2.2.4/gson-2.2.4.jar:/Users/mfikes/.m2/repository/goby/goby/0.3.0/goby-0.3.0.jar:/Users/mfikes/.m2/repository/org/clojure/data.json/0.2.6/data.json-0.2.6.jar:/Users/mfikes/.m2/repository/org/clojure/clojurescript/0.0-3152/clojurescript-0.0-3152.jar:/Users/mfikes/.m2/repository/junit/junit/4.10/junit-4.10.jar:/Users/mfikes/.m2/repository/org/clojure/tools.nrepl/0.2.6/tools.nrepl-0.2.6.jar:/Users/mfikes/.m2/repository/com/github/rickyclarkson/jmdns/3.4.2-r353-1/jmdns-3.4.2-r353-1.jar:/Users/mfikes/.m2/repository/org/mozilla/rhino/1.7R5/rhino-1.7R5.jar:/Users/mfikes/.m2/repository/org/clojure/clojure/1.6.0/clojure-1.6.0.jar:/Users/mfikes/.m2/repository/com/google/javascript/closure-compiler/v20150126/closure-compiler-v20150126.jar:/Users/mfikes/.m2/repository/org/clojure/core.async/0.1.346.0-17112a-alpha/core.async-0.1.346.0-17112a-alpha.jar:/Users/mfikes/.m2/repository/org/clojure/data.priority-map/0.0.2/data.priority-map-0.0.2.jar:/Users/mfikes/.m2/repository/com/google/truth/truth/0.24/truth-0.24.jar:/Users/mfikes/.m2/repository/com/google/protobuf/protobuf-java/2.5.0/protobuf-java-2.5.0.jar:/Applications/IntelliJ IDEA 14.app/Contents/lib/idea_rt.jar" com.intellij.rt.execution.application.AppMain clojure.main -i /private/var/folders/nm/97bx7f_n31z2t2g_gf2bn90w0h013l/T/form-init5134941190370877466.clj
Exception in thread "main" Error loading cemerick.piggieback: java.lang.RuntimeException: Unable to resolve var: ieval/default-executor in this context, compiling:(cemerick/piggieback.clj:176:3)
java.lang.RuntimeException: Unable to resolve var: cemerick.piggieback/wrap-cljs-repl in this context, compiling:(/private/var/folders/nm/97bx7f_n31z2t2g_gf2bn90w0h013l/T/form-init5134941190370877466.clj:1:1187)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6651)
at clojure.lang.Compiler.analyze(Compiler.java:6445)
at clojure.lang.Compiler.analyze(Compiler.java:6406)
at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3719)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6646)
at clojure.lang.Compiler.analyze(Compiler.java:6445)
at clojure.lang.Compiler.analyze(Compiler.java:6406)
at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3719)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6646)
at clojure.lang.Compiler.analyze(Compiler.java:6445)
at clojure.lang.Compiler.access$100(Compiler.java:38)
at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6050)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6644)
at clojure.lang.Compiler.analyze(Compiler.java:6445)
at clojure.lang.Compiler.analyze(Compiler.java:6406)
at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5782)
at clojure.lang.Compiler$FnMethod.parse(Compiler.java:5217)
at clojure.lang.Compiler$FnExpr.parse(Compiler.java:3846)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6642)
at clojure.lang.Compiler.analyze(Compiler.java:6445)
at clojure.lang.Compiler.eval(Compiler.java:6700)
at clojure.lang.Compiler.eval(Compiler.java:6693)
at clojure.lang.Compiler.load(Compiler.java:7130)
at clojure.lang.Compiler.loadFile(Compiler.java:7086)
at clojure.main$load_script.invoke(main.clj:274)
at clojure.main$init_opt.invoke(main.clj:279)
at clojure.main$initialize.invoke(main.clj:307)
at clojure.main$null_opt.invoke(main.clj:342)
at clojure.main$main.doInvoke(main.clj:420)
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)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
Caused by: java.lang.RuntimeException: Unable to resolve var: cemerick.piggieback/wrap-cljs-repl in this context
at clojure.lang.Util.runtimeException(Util.java:221)
at clojure.lang.Compiler$TheVarExpr$Parser.parse(Compiler.java:659)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6644)
... 38 more
No nREPL ack received
I checked in IntelliJ's External Libraries and see that com.cemeric/piggieback:0.2.0-20150324.133414-2
is being used and that
(defn wrap-cljs-repl [handler]
...)
is indeed available.
I'm following the instructions I put together for Ambly with Piggieback / Cursive at https://github.com/omcljs/ambly/wiki/REPL-in-Cursive, changing the dep to use the snapshot. I'm also using ClojureScript master.
Here is my Shrimp project.clj
(defproject shrimp "0.1.0-SNAPSHOT"
:description "Demo project for Goby."
:dependencies [[org.clojure/clojure "1.6.0"]
[org.clojure/clojurescript "0.0-3152"]
[org.clojure/core.async "0.1.346.0-17112a-alpha"]
[goby "0.3.0"]
[org.omcljs/ambly "0.1.0-SNAPSHOT"]
[com.cemerick/piggieback "0.2.0-SNAPSHOT"]]
:plugins [[lein-cljsbuild "1.0.5"]]
:repl-options {:nrepl-middleware [cemerick.piggieback/wrap-cljs-repl]}
:source-paths ["src"]
:clean-targets ["target" "out"]
:cljsbuild {:builds {:dev
{:source-paths ["src"]
:compiler {:output-to "out/main.js"
:output-dir "out"
:optimizations :none}}
:rel
{:source-paths ["src"]
:compiler {:output-to "out/main.js"
:optimizations :advanced
:externs ["externs.js"]
:pretty-print false
:pseudo-names false}}}})
I suspect that you're getting an older (default) nREPL rev. Piggieback requires
0.2.9
, and e.g. Leiningen is currently defaulting to0.2.6
or something. I ended up having to do this in piggieback itself as a workaround: https://github.com/cemerick/piggieback/blob/new-cljs-repl/project.clj#L18