我一直在尝试设置Clojure来使用Overtone。
但是,当我尝试在Project文件夹中启动Lein时,我收到此消息:
Exception in thread "main" java.lang.Exception: EOF while reading string (project.clj:5)
at clojure.lang.Compiler.load(Compiler.java:5864)
at clojure.lang.Compiler.loadFile(Compiler.java:5821)
at clojure.lang.RT$3.invoke(RT.java:296)
at leiningen.core$read_project$fn__2128.invoke(core.clj:127)
at leiningen.core$read_project.invoke(core.clj:126)
at leiningen.core$read_project.invoke(core.clj:130)
at leiningen.core$_main.doInvoke(core.clj:320)
at clojure.lang.RestFn.invoke(RestFn.java:410)
at clojure.lang.AFn.applyToHelper(AFn.java:161)
at clojure.lang.RestFn.applyTo(RestFn.java:132)
at clojure.core$apply.invoke(core.clj:542)
at leiningen.core$_main.invoke(core.clj:332)
at user$eval42.invoke(NO_SOURCE_FILE:1)
at clojure.lang.Compiler.eval(Compiler.java:5425)
at clojure.lang.Compiler.eval(Compiler.java:5392)
at clojure.core$eval.invoke(core.clj:2382)
at clojure.main$eval_opt.invoke(main.clj:235)
at clojure.main$initialize.invoke(main.clj:254)
at clojure.main$script_opt.invoke(main.clj:270)
at clojure.main$main.doInvoke(main.clj:354)
at clojure.lang.RestFn.invoke(RestFn.java:436)
at clojure.lang.Var.invoke(Var.java:373)
at clojure.lang.AFn.applyToHelper(AFn.java:167)
at clojure.lang.Var.applyTo(Var.java:482)
at clojure.main.main(main.java:37)
Caused by: java.lang.Exception: EOF while reading string
at clojure.lang.LispReader$StringReader.invoke(LispReader.java:407)
at clojure.lang.LispReader.readDelimitedList(LispReader.java:1051)
at clojure.lang.LispReader$VectorReader.invoke(LispReader.java:998)
at clojure.lang.LispReader.readDelimitedList(LispReader.java:1051)
at clojure.lang.LispReader$VectorReader.invoke(LispReader.java:998)
at clojure.lang.LispReader.readDelimitedList(LispReader.java:1051)
at clojure.lang.LispReader$ListReader.invoke(LispReader.java:900)
at clojure.lang.LispReader.read(LispReader.java:145)
at clojure.lang.Compiler.load(Compiler.java:5854)
... 24 more
我已经确定这不是因为不匹配的parens。我在互联网上搜索了this。似乎人们通过从JRE切换到JDK来解决他们的问题。请注意,他们在谈论Windows。
我使用的是Ubuntu Linux,而且从未用Java开发过。我对粗略的Java技术只有粗略的了解。请有人帮我解决这个问题!那对你很好。这是一个非常不愉快的障碍,我只是想开始“哦,太棒了”的Clojure。 (这很好,没有讽刺的意思。)
问题2:我对Clojure很新。我在大学期间做SICP时使用Scheme,并决定转向更现代的LISP方言。我对语法感到满意但是我想知道Clojure是否与“Java生态系统”密切相关?我知道它在一般意义上与Java有关;但是Clojure程序员是否觉得你在Java中工作时只添加了parens,或者Clojure真的是在JVM上运行的生态系统吗?我寄予厚望,但在遇到这样一个与Java有关的障碍后,我感到非常失望。
这是project.clj(感谢你提到@Arthur Ulfeldt):
(defproject tutorial "1.0"
:dependencies [ [org.clojure/clojure "1.5.1"]
[overtone "0.8.1"] ])
来自Overtone的“入门”部分。
答案 0 :(得分:3)
问题2:
Clojure是一种托管语言,其中一个核心理念是拥抱平台。使用现有的Java库是很惯用的,它们很简单,当它们复杂化时会包装或替换它们。我发现Clojure是学习Java生态系统的绝佳方式。其他驱动原则是保持事物分离和简单,以及适当地追踪身份和时间。
答案 1 :(得分:2)
stacktrace让我看起来像你的project.clj读起来像:
(defproject whatever "1.0"
:dependencies [[something "1.0]])
基本上,您缺少字符串的close-quote,并且该字符串嵌套在两个向量内。这很可能意味着:dependencies
,但它可能在其他地方。问题可能在project.clj的第5行,所以开始寻找那里。