2010-07-10 105 views
6

由於某些原因,我無法使用jline獲取clojure REPL,我做的是git克隆github上的clojure庫,然後運行ant構建它,然後我下載jline-0.9.94。罐子與clojure.jar的目錄,然後運行以下命令:clojure/lein REPL with jline

java -cp jline-0.9.94.jar:clojure.jar jline.ConsoleRunner clojure.main 

,並獲得以下錯誤:

Exception in thread "main" java.lang.ClassNotFoundException: clojure.main 
at java.net.URLClassLoader$1.run(URLClassLoader.java:200) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:317) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:252) 
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:375) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:164) 
at jline.ConsoleRunner.main(Unknown Source) 

以下是文件在我的當前目錄:

vvshs-macbook-2:clojure vvsh$ ls 
build.xml         clojure-sources-1.2.0-master-SNAPSHOT.jar epl-v10.html        src 
classes         clojure-sources.jar      jline-0.9.94.jar       test 
clojure-1.2.0-master-SNAPSHOT.jar   clojure.iml        pom-template.xml 
clojure-slim-1.2.0-master-SNAPSHOT.jar clojure.jar        pom.xml 
clojure-slim.jar       doc          readme.txt 
vvshs-macbook-2:clojure vvsh$ 

我在clojure 1.1和lein repl上看到了同樣的錯誤(它似乎保留了它自己的clojure版本)。

順便說一句,這是Mac 10.5.8牛

java version "1.5.0_24" 
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_24-b02-357-9M3165) 
Java HotSpot(TM) Client VM (build 1.5.0_24-149, mixed mode, sharing) 

任何人都知道什麼是錯的,如何解決?因爲我真的想讓lein repl努力開始一個項目。

+0

實際上,這個設置在幾乎相同的環境(OSX,來自源代碼,jline,同一命令行的Clojure)中適用於我。 – 2010-07-11 14:01:24

回答

3

我今天通過從/Library/Java/Extensions中刪除多餘的jline*.jar解決了同樣的問題,只留下了一個跳線安裝CLASSPATH

更詳細的解釋:我試圖建立labrepl,它安裝在其子目錄lib所有的依賴關係,但我以前曾在.jar文件複製到/Library/Java/Extensions設立的JLine。 Apparently,java.lang.ClassLoader無法處理jline的兩個安裝,並且只要在兩個地方有可用的命令行,啓動Clojure REPL的命令行將無法找到類別jline.ConsoleRunnerclojure.main中的後一個,具體取決於它們的順序到java命令。

我希望這會有所幫助。

+0

謝謝,現在一切正常,我無法相信簡單的刪除它解決了問題。 – 2010-07-11 18:41:05

+0

我也受到了打擊。見[這個答案](http://stackoverflow.com/questions/4655852/why-is-my-javap-output-different-than-yours-for-the-same-jar-file/5530443#5530443)爲另一個同一個問題的版本。 – Lyle 2011-07-29 04:34:02

1

看到我的其他說明對我的叉子安裝:

http://github.com/jedschneider/leiningen

我發了拉請求,以更新的自述,但沒有得到它的迴應。一旦你安裝了lein,你可以把bin/leiningen.sh放到你的〜/ bin中並在任何地方調用它。我把一個快捷方式在我的.bash_profile

alias lein="~/bin/leiningen.sh"

,然後調用lein repl推出殼

也檢出labrepl這是一個很好的學習工具。

http://github.com/relevance/labrepl

+0

感謝您的好工具,我通過使用pyrtsa的方法得到了lein repl的工作。 – 2010-07-11 18:45:40

0

java ...命令看起來不錯,我會仔細檢查,如果所有的罐子,你認爲他們應該(和他們是罐子你認爲他們是,即clojure.jar實際上是一個是你本地建造的,而不是一些超級過時的)。

如果你想使用Leiningen的lein repl,那也是可能的。請注意,它說「維護自己的Clojure版本」並不準確; Leiningen是一個構建工具,用作面向項目工作流程的一部分,獨立的Clojure罐子項目專用。要創建一個示例項目,請在lein new foo的某處方便。然後你需要cd foo,讓你的Clojure & condit jars與lein depsproject.cljlein new提供的骨架已經包含兩個條目),並開始REPL與lein repl

最後,您可以使用新的;它有一個全面的自述文件,它可以讓你立即開始,並且可以通過它來說cljr repl可以在任何地方獲得Clojure REPL,而無需創建「項目」。

+0

啊,順便說一下,如果你想要一個新的Clojure版本,你最好去http://build.clojure.org/並從那裏獲取一個jar。如果你是從語言開始的 - 從你是否願意的問題來看並不明顯,但如果 - 你應該堅持1.1。 – 2010-07-10 13:37:31

+0

謝謝,我是初學者,所以我認爲1.1中的所有功能都足以學習:) – 2010-07-11 18:43:52

0

我遇到了同樣的問題。 jline.ConsoleRunner(至少關於我使用的jline-0.9.5)似乎無法在從'java'命令的-cp選項添加到類搜索路徑的路徑中找到類文件。這意味着它在當前目錄中找不到任何類。我通過在/ Library/Java/Extensions /下複製clojure.main解決了這個問題。