Clojure Lein REPL无法打开

Clojure Lein REPL无法打开,clojure,leiningen,Clojure,Leiningen,我一直在尝试设置Clojure使用泛音 但是,当我尝试在项目文件夹中激发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

我一直在尝试设置Clojure使用泛音

但是,当我尝试在项目文件夹中激发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中工作时只添加了paren,或者Clojure真的是一个在JVM上运行的生态系统?我曾抱有很高的期望,但在遇到与Java相关的这样一个障碍后,我感到非常失望

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


它来自泛音的“入门”部分。

stacktrace使它看起来像你的项目。clj的内容如下:

(defproject whatever "1.0"
  :dependencies [[something "1.0]])
基本上,您缺少字符串的右引号,并且该字符串嵌套在两个向量中。这很可能意味着
:依赖关系
,但它可能在其他地方。问题可能出现在project.clj的第5行,因此请开始查看那里。

问题2:


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

您最好一次只问一个问题。Clojure不仅在api方面与Java紧密相连,而且部分是用Java编写的,所以如果你在做相对低级的工作,你可能需要理解Java。此外,它显然有助于理解java运行时的内容(比如字节码、垃圾收集、JIT、反射等等)?这将真正有助于调试此项目。该项目中没有五行。clj,可能文件未保存?我再次复制粘贴以确保。。。不工作,我将升级我的SDK,Lein,看看它是否工作。显然这对某些人有用。如果这真的是你的project.clj,我希望是隐藏的非打印unicode。这个错误不是java错误,它只是一个暴露了一些java实现细节的错误。clojure解析器到达了您的三行文件的第五行,而一个已经打开的字符串还没有关闭?您必须学习Objective C框架。谢谢。现在我明白了为什么问题应该分开问;)它在我的Mac(GoMac!)上工作,所以我结束这个问题。谢谢你的回答。很抱歉没有在前面包含projectl.clj!请原谅!
(defproject whatever "1.0"
  :dependencies [[something "1.0]])