2013-06-25 93 views
1

我一直在試圖設置Clojure來使用Overtone。Clojure Lein REPL未能打開

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 

我已經確定,這不是由於不匹配的括號:

然而,當我試着火了雷音項目文件夾內我得到這個消息。我在互聯網上搜索,發現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"] ]) 

這是從泛音的 「入門」 一節。

+0

你最好在當時問一個問題。 Clojure不僅在api方面與Java綁定在一起,而且它是用Java編寫的,所以如果你做的是相對低級的東西,你可能需要了解Java。此外,它顯然有助於理解Java運行時的東西(如字節碼,垃圾收集,JIT,反射等)。 –

+2

能否包含project.clj的內容?它真的會幫助調試這個。 –

+0

該project.clj中沒有五行,也許文件沒有保存? –

回答

2

問題2:

Clojure是一種託管語言和核心理念是擁抱平臺之一。使用現有的Java庫足夠簡單,並且在它們使事情複雜化時包裝或替換它們是習慣用法。我發現Clojure是是學習Java生態系統的絕佳方式。其他驅動原則是保持事物分離和簡單,並適當地跟蹤身份和時間。

+0

所以這就像使用MacRuby編程?你必須學習Objective C框架。謝謝。 – Roald

+1

雖然只有很好的部分;-) –

+1

現在我明白爲什麼問題應該單獨問;) – Roald

2

堆棧跟蹤使得它看起來對我來說,你的project.clj倒像是:

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

基本上,你缺少近距離報價的字符串,而該字符串嵌套兩個向量的內部。這很可能意味着:dependencies,但它可能在其他地方。這個問題可能在project.clj的第5行,所以開始看那裏。

+0

對不起,以前不包括projectl.clj!請您再說一遍! – Roald