Closed alexander-yakushev closed 9 years ago
Thanks for the reporting. I'm going to investigate it. I think I saw one more valid project that had the same behavior.
@alexander-yakushev for some reason clojure.edn/read
couldn't read your project.clj
.
I'm getting No dispatch macro for: "
error. Going to look more why that can be.
Thank you! Tell me if I can be of any help.
@alexander-yakushev so I looked more into your file. I noticed that if I remove this line https://github.com/clojure-android/neko/blob/master/project.clj#L32 and load your content into REPL it works. Otherwise it throws and error. See below:
(def x1 '(defproject neko "4.0.0-alpha5"
:description "Neko is a toolkit designed to make Android development using Clojure easier and more fun."
:url "https://github.com/clojure-android/neko"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure-android/clojure "1.7.0-r2"]
[com.android.support/multidex "1.0.0" :extension "aar"]]
:plugins [[lein-droid "0.4.1-SNAPSHOT"]]
:source-paths ["src/clojure"]
:java-source-paths ["src/java"]
:profiles {:default [:android-common]
:robolectric
[:android-common
{:dependencies [[junit/junit "4.12"]
[org.robolectric/robolectric "3.0"]
[org.clojure-android/droid-test "0.1.1-SNAPSHOT"]
[org.clojure/tools.nrepl "0.2.10"]]}]
:local-testing
[:robolectric
{:target-path "target/local-testing"
:dependencies [[venantius/ultra "0.3.3"]]
:android {:aot [#"neko.*\.t-.+" "ultra.test"]}}]
:local-repl
[:robolectric
{:target-path "target/local-repl"}]
:travis
[:local-testing
{:dependencies [[cloverage "1.0.6" :exclusions [org.clojure/tools.logging]]
[org.clojure-android/tools.logging "0.3.2-r1"]]
:plugins [[lein-shell "0.4.0"]]
:aliases {"coverage" ["do" ["droid" "local-test" "cloverage"]
["shell" "curl" "-F"
"json_file=@target/coverage/coveralls.json"
"https://coveralls.io/api/v1/jobs"]]}
:android {:sdk-path "/usr/local/android-sdk/"
:aot ["cloverage.coverage"]
:cloverage-exclude-ns ["neko.tools.repl"]}}]}
:android {:library true
:target-version 18}))
this worked.
And this:
(def x1 '(defproject neko "4.0.0-alpha5"
:description "Neko is a toolkit designed to make Android development using Clojure easier and more fun."
:url "https://github.com/clojure-android/neko"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure-android/clojure "1.7.0-r2"]
[com.android.support/multidex "1.0.0" :extension "aar"]]
:plugins [[lein-droid "0.4.1-SNAPSHOT"]]
:source-paths ["src/clojure"]
:java-source-paths ["src/java"]
:profiles {:default [:android-common]
:robolectric
[:android-common
{:dependencies [[junit/junit "4.12"]
[org.robolectric/robolectric "3.0"]
[org.clojure-android/droid-test "0.1.1-SNAPSHOT"]
[org.clojure/tools.nrepl "0.2.10"]]}]
:local-testing
[:robolectric
{:target-path "target/local-testing"
:dependencies [[venantius/ultra "0.3.3"]]
:android {:aot [#"neko.*\.t-.+" "ultra.test"]}}]
:local-repl
[:robolectric
{:target-path "target/local-repl"
:android {:aot :all-with-unused}}]
:travis
[:local-testing
{:dependencies [[cloverage "1.0.6" :exclusions [org.clojure/tools.logging]]
[org.clojure-android/tools.logging "0.3.2-r1"]]
:plugins [[lein-shell "0.4.0"]]
:aliases {"coverage" ["do" ["droid" "local-test" "cloverage"]
["shell" "curl" "-F"
"json_file=@target/coverage/coveralls.json"
"https://coveralls.io/api/v1/jobs"]]}
:android {:sdk-path "/usr/local/android-sdk/"
:aot ["cloverage.coverage"]
:cloverage-exclude-ns ["neko.tools.repl"]}}]}
:android {:library true
:target-version 18}))
fails with
clojure.lang.LispReader$ReaderException: java.lang.RuntimeException: Invalid token: :
java.lang.RuntimeException: Invalid token: :
...
clojure.core/read core.clj: 3477
clojure.core/read core.clj: 3475
clojure.tools.nrepl.middleware.interruptible-eval/evaluate/fn/fn interruptible_eval.clj: 63
clojure.lang.LispReader$ReaderException: java.lang.RuntimeException: Unmatched delimiter: }
java.lang.RuntimeException: Unmatched delimiter: }
...
clojure.core/read core.clj: 3477
clojure.core/read core.clj: 3475
clojure.tools.nrepl.middleware.interruptible-eval/evaluate/fn/fn interruptible_eval.clj: 63
clojure.lang.LispReader$ReaderException: java.lang.RuntimeException: Unmatched delimiter: )
java.lang.RuntimeException: Unmatched delimiter: )
...
clojure.core/read core.clj: 3477
clojure.core/read core.clj: 3475
clojure.tools.nrepl.middleware.interruptible-eval/evaluate/fn/fn interruptible_eval.clj: 63
clojure.lang.LispReader$ReaderException: java.lang.RuntimeException: Unmatched delimiter: )
java.lang.RuntimeException: Unmatched delimiter: )
...
clojure.core/read core.clj: 3477
clojure.core/read core.clj: 3475
clojure.tools.nrepl.middleware.interruptible-eval/evaluate/fn/fn interruptible_eval.clj: 63
I'm not sure exactly what is the problem with that line but in general it seems like clojure reader is failing on your file.
This is probably because regex is not readable as EDN. I hit a similar problem with a project.clj which includes some code: https://github.com/metosin/schema-tools/blob/master/project.clj
Solution would be to use clojure.core/read for reading project.clj because it's possible that project.clj contains some non-edn forms.
Good point @Deraen ! Indeed there appeared a few regular expressions in my project.clj.
@Deraen thanks for the fix, it's live now. I was thinking myself that the problem was in edn reader but than I tried to paste content of this project into repl and it failed. See traces above. Do you know why I got that error in the repl?
Thanks to both of you!
No dispatch macro for: "
is caused by edn reader not recognizing reader macros like #
(regex) or #(
(anon function).
I used Jarkeeper to add a badge for http://jarkeeper.com/clojure-android/neko, and it certainly worked before. Now Jarkeeper just bounces me back to index when I try to visit the link, and the badge is not shown. OTOH, for example, http://jarkeeper.com/clojure-android/lein-droid works perfectly fine. What could it be?