Skip to content

Instantly share code, notes, and snippets.

@mfikes
Created March 24, 2015 15:50
Show Gist options
  • Save mfikes/00cd985433191cc6dafa to your computer and use it in GitHub Desktop.
Save mfikes/00cd985433191cc6dafa to your computer and use it in GitHub Desktop.
Piggieback test

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}}}})
@cemerick
Copy link

I suspect that you're getting an older (default) nREPL rev. Piggieback requires 0.2.9, and e.g. Leiningen is currently defaulting to 0.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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment