3

我一直在尝试设置 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

我已经确定这不是由于不匹配的括号。我在互联网上进行了搜索,发现了这个。似乎人们通过从 JRE 切换到 JDK 解决了他们的问题。请注意,他们正在谈论 Windows。

我正在使用 Ubuntu Linux 并且从未用 Java 开发过。我对不同的 Java 技术只有粗略的了解。有人可以帮我弄清楚这个吗!那你就太好了。这是一个非常不愉快的障碍,我只是想开始使用“哦,太棒了”Clojure。(太棒了,没有讽刺的意思。)

问题 2:我对 Clojure 很陌生。我在大学做 SICP 时使用了 Scheme,并决定转向更现代的 LISP 方言。我对语法很满意,但是我想知道 Clojure 是否与“Java 生态系统”密切相关?我知道它与一般意义上的 Java 相关。但是您的 Clojure 程序员是否觉得您在 Java 中工作只是添加了括号,还是 Clojure 真的是一个运行在 JVM 上的生态系统?我寄予厚望,但在遇到这样一个与 Java 相关的障碍后,我感到非常失望。

这是 project.clj (感谢提及@Arthur Ulfeldt):

    (defproject tutorial "1.0"
        :dependencies [ [org.clojure/clojure "1.5.1"]
                        [overtone "0.8.1"] ])

它来自 Overtone 的“入门”部分。

4

2 回答 2

4

问题2:

Clojure 是一种托管语言,其核心理念之一是拥抱平台。在现有的 Java 库中使用它们非常简单,并在它们使事情变得复杂时包装或替换它们是惯用的。我发现 Clojure 是学习 Java 生态系统的绝佳方式。其他驱动原则是保持事物分离和简单,以及适当地跟踪身份和时间。

于 2013-06-25T20:05:07.537 回答
3

stacktrace 让我觉得你的 project.clj 看起来像:

(defproject whatever "1.0"
  :dependencies [[something "1.0]])

基本上,您缺少一个字符串的右引号,并且该字符串嵌套在两个向量中。很可能这意味着:dependencies,但它可能在其他地方。问题可能出在 project.clj 的第 5 行,所以开始看那里。

于 2013-06-25T20:03:52.027 回答