2016-01-03 1 views
4

Я стараюсь следить за this tutorial на lein-droid на основе разработки Clojure на Android. Тем не менее, в учебнике проскакивают настройки поддержки Сидра.Использование Cider на Android

Я начинаю с lein-droid проектом по умолчанию, добавив

:user {:plugins [ [lein-droid "0.4.0-alpha4"] ]} 

к моим ~/.lein/profiles.clj, а затем запустить

$ lein droid new android-hello com.example.android_hello 

Согласно учебнику, я должен быть в состоянии сделать lein droid doall, а затем подключить с Сидром до localhost:9999 на данный момент; однако, является непригодным для использования из-за nREPL отсутствует на Android стороне:

; CIDER 0.9.1 (Java 0, Clojure 1.7.0-beta3-r2, nREPL nil) 
WARNING: CIDER's version (0.9.1) does not match cider-nrepl's version (not installed) 

Итак, согласно this other tutorial, что я нашел, я должен добавить cider-nrepl к моим Android зависимостями, добавив в ~/.lein/profiles.clj:

:android-user {:plugins [[cider/cider-nrepl "0.9.1"]] 
       :android {:aot-exclude-ns ["cider.nrepl.middleware.util.java.parser" 
              "cider.nrepl" "cider-nrepl.plugin"]}}} 

Так что я делаю новый lein clean; lein droid doall, чтобы убедиться, что все подобрано красиво; и теперь возникающая в результате программа аварий на Android при запуске:

W/dalvikvm(2508): Exception Ljava/lang/IllegalArgumentException; thrown while initializing Ldeps/cljfmt/v0v1v10/cljfmt/core__init; 
W/dalvikvm(2508): Exception Ljava/lang/ExceptionInInitializerError; thrown while initializing Lcider/nrepl/middleware/format__init; 
W/dalvikvm(2508): threadid=10: thread exiting with uncaught exception (group=0xb5157180) 
E/AndroidRuntime(2508): FATAL EXCEPTION: ClojureLoadingThread 
E/AndroidRuntime(2508): java.lang.ExceptionInInitializerError 
E/AndroidRuntime(2508): at java.lang.Class.classForName(Native Method) 
E/AndroidRuntime(2508): at java.lang.Class.forName(Class.java:217) 
E/AndroidRuntime(2508): at clojure.lang.RT.classForName(RT.java:2201) 
E/AndroidRuntime(2508): at clojure.lang.RT.classForName(RT.java:2210) 
E/AndroidRuntime(2508): at clojure.lang.RT.loadClassForName(RT.java:2229) 
E/AndroidRuntime(2508): at clojure.lang.RT.load(RT.java:461) 
E/AndroidRuntime(2508): at clojure.lang.RT.load(RT.java:437) 
E/AndroidRuntime(2508): at clojure.core$load$fn__5442.invoke(core.clj:5858) 
E/AndroidRuntime(2508): at clojure.core$load.doInvoke(core.clj:5857) 
E/AndroidRuntime(2508): at clojure.lang.RestFn.invoke(RestFn.java:408) 
E/AndroidRuntime(2508): at clojure.core$load_one.invoke(core.clj:5663) 
E/AndroidRuntime(2508): at clojure.core$load_lib$fn__5391.invoke(core.clj:5703) 
E/AndroidRuntime(2508): at clojure.core$load_lib.doInvoke(core.clj:5702) 
E/AndroidRuntime(2508): at clojure.lang.RestFn.applyTo(RestFn.java:142) 
E/AndroidRuntime(2508): at clojure.core$apply.invoke(core.clj:630) 
E/AndroidRuntime(2508): at clojure.core$load_libs.doInvoke(core.clj:5741) 
E/AndroidRuntime(2508): at clojure.lang.RestFn.applyTo(RestFn.java:137) 
E/AndroidRuntime(2508): at clojure.core$apply.invoke(core.clj:630) 
E/AndroidRuntime(2508): at clojure.core$require.doInvoke(core.clj:5824) 
E/AndroidRuntime(2508): at clojure.lang.RestFn.invoke(RestFn.java:408) 
E/AndroidRuntime(2508): at neko.tools.repl$start_repl$fn__6556$fn__6557.invoke(repl.clj:77) 
E/AndroidRuntime(2508): at clojure.core$map$fn__4547.invoke(core.clj:2616) 
E/AndroidRuntime(2508): at clojure.lang.LazySeq.sval(LazySeq.java:40) 
E/AndroidRuntime(2508): at clojure.lang.LazySeq.seq(LazySeq.java:49) 
E/AndroidRuntime(2508): at clojure.lang.RT.seq(RT.java:534) 
E/AndroidRuntime(2508): at clojure.core$seq__4122.invoke(core.clj:135) 
E/AndroidRuntime(2508): at clojure.core$apply.invoke(core.clj:628) 
E/AndroidRuntime(2508): at neko.tools.repl$start_repl$fn__6556.invoke(repl.clj:75) 
E/AndroidRuntime(2508): at clojure.core$with_redefs_fn.invoke(core.clj:7185) 
E/AndroidRuntime(2508): at neko.tools.repl$start_repl.doInvoke(repl.clj:72) 
E/AndroidRuntime(2508): at clojure.lang.RestFn.applyTo(RestFn.java:139) 
E/AndroidRuntime(2508): at clojure.core$apply.invoke(core.clj:630) 
E/AndroidRuntime(2508): at neko.tools.repl$init.doInvoke(repl.clj:102) 
E/AndroidRuntime(2508): at clojure.lang.RestFn.invoke(RestFn.java:397) 
E/AndroidRuntime(2508): at clojure.lang.Var.invoke(Var.java:375) 
E/AndroidRuntime(2508): at neko.App.loadClojure(App.java:40) 
E/AndroidRuntime(2508): at neko.App$1.run(App.java:51) 
E/AndroidRuntime(2508): at java.lang.Thread.run(Thread.java:856) 
E/AndroidRuntime(2508): Caused by: java.lang.ExceptionInInitializerError 
E/AndroidRuntime(2508): at java.lang.Class.classForName(Native Method) 
E/AndroidRuntime(2508): at java.lang.Class.forName(Class.java:217) 
E/AndroidRuntime(2508): at clojure.lang.RT.classForName(RT.java:2201) 
E/AndroidRuntime(2508): at clojure.lang.RT.classForName(RT.java:2210) 
E/AndroidRuntime(2508): at clojure.lang.RT.loadClassForName(RT.java:2229) 
E/AndroidRuntime(2508): at clojure.lang.RT.load(RT.java:461) 
E/AndroidRuntime(2508): at clojure.lang.RT.load(RT.java:437) 
E/AndroidRuntime(2508): at clojure.core$load$fn__5442.invoke(core.clj:5858) 
E/AndroidRuntime(2508): at clojure.core$load.doInvoke(core.clj:5857) 
E/AndroidRuntime(2508): at clojure.lang.RestFn.invoke(RestFn.java:408) 
E/AndroidRuntime(2508): at clojure.core$load_one.invoke(core.clj:5663) 
E/AndroidRuntime(2508): at clojure.core$load_lib$fn__5391.invoke(core.clj:5703) 
E/AndroidRuntime(2508): at clojure.core$load_lib.doInvoke(core.clj:5702) 
E/AndroidRuntime(2508): at clojure.lang.RestFn.applyTo(RestFn.java:142) 
E/AndroidRuntime(2508): at clojure.core$apply.invoke(core.clj:630) 
E/AndroidRuntime(2508): at clojure.core$load_libs.doInvoke(core.clj:5741) 
E/AndroidRuntime(2508): at clojure.lang.RestFn.applyTo(RestFn.java:137) 
E/AndroidRuntime(2508): at clojure.core$apply.invoke(core.clj:630) 
E/AndroidRuntime(2508): at clojure.core$require.doInvoke(core.clj:5824) 
E/AndroidRuntime(2508): at clojure.lang.RestFn.invoke(RestFn.java:703) 
E/AndroidRuntime(2508): at cider.nrepl.middleware.format$loading__5334__auto____6889.invoke(format.clj:1) 
E/AndroidRuntime(2508): at cider.nrepl.middleware.format__init.load(Unknown Source) 
E/AndroidRuntime(2508): at cider.nrepl.middleware.format__init.<clinit>(Unknown Source) 
E/AndroidRuntime(2508): ... 38 more 
E/AndroidRuntime(2508): Caused by: java.lang.IllegalArgumentException: No implementation of method: :make-reader of protocol: #'clojure.java.io/IOFactory found for class: nil 
E/AndroidRuntime(2508): at clojure.core$_cache_protocol_fn.invoke(core_deftype.clj:554) 
E/AndroidRuntime(2508): at clojure.java.io$fn__8970$G__8946__8977.invoke(io.clj:69) 
E/AndroidRuntime(2508): at clojure.java.io$reader.doInvoke(io.clj:102) 
E/AndroidRuntime(2508): at clojure.lang.RestFn.invoke(RestFn.java:410) 
E/AndroidRuntime(2508): at clojure.lang.AFn.applyToHelper(AFn.java:154) 
E/AndroidRuntime(2508): at clojure.lang.RestFn.applyTo(RestFn.java:132) 
E/AndroidRuntime(2508): at clojure.core$apply.invoke(core.clj:630) 
E/AndroidRuntime(2508): at clojure.core$slurp.doInvoke(core.clj:6645) 
E/AndroidRuntime(2508): at clojure.lang.RestFn.invoke(RestFn.java:410) 
E/AndroidRuntime(2508): at clojure.core$comp$fn__4489.invoke(core.clj:2432) 
E/AndroidRuntime(2508): at clojure.core$comp$fn__4489.invoke(core.clj:2432) 
E/AndroidRuntime(2508): at deps.cljfmt.v0v1v10.cljfmt.core__init.load(Unknown Source) 
E/AndroidRuntime(2508): at deps.cljfmt.v0v1v10.cljfmt.core__init.<clinit>(Unknown Source) 
E/AndroidRuntime(2508): ... 61 more 
W/ActivityManager( 867): Force finishing activity hu.erdi.gergo.clojure_android_hello.debug/hu.erdi.gergo.clojure_android_hello.SplashActivity 
W/WindowManager( 867): Failure taking screenshot for (180x300) to layer 21010 
D/dalvikvm( 867): GC_CONCURRENT freed 561K, 13% free 11324K/12871K, paused 0ms+2ms 
W/NetworkManagementSocketTagger( 867): setKernelCountSet(10041, 0) failed with errno -2 

ответ

1

Возможно, вы совершили небольшую ошибку, следуя руководству, на которое вы ссылались выше.

Это:

:android-user {:plugins [[cider/cider-nrepl "0.9.1"]] 
       :android {:aot-exclude-ns ["cider.nrepl.middleware.util.java.parser" 
              "cider.nrepl" "cider-nrepl.plugin"]}}} 

Должно быть:

:android-user {:dependencies [[cider/cider-nrepl "0.9.1"]] 
       :android {:aot-exclude-ns ["cider.nrepl.middleware.util.java.parser" 
              "cider.nrepl" "cider-nrepl.plugin"]}} 
Смежные вопросы