2010-06-04 70 views
5

我似乎無法找到一種方法來啓動包含contrib庫的Clojure REPL。如果我理解正確的文件,然後這個命令應該這樣做:如何在Windows上安裝clojure-contrib?

C:\clojure-1.1.0>"%ProgramFiles%\Java\jre6\bin\java.exe" -cp clojure.jar:clojure 
-contrib.jar clojure.main 
Exception in thread "main" java.lang.NoClassDefFoundError: clojure/main 
Caused by: java.lang.ClassNotFoundException: clojure.main 
     at java.net.URLClassLoader$1.run(Unknown Source) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
Could not find the main class: clojure.main. Program will exit. 

但正如你所看到的,它失敗。我沒有將clojure-contrib.jar複製到C:\clojure-1.1.0文件夾。

有人能幫我解決問題嗎?

更新
感謝Michal的文章中,我發現我的錯誤是使用一個冒號,我不得不使用一個分號。這工作:

C:\clojure-1.1.0>"%ProgramFiles%\Java\jre6\bin\java.exe" -cp clojure.jar;clojure-contrib.jar clojure.main 
Clojure 1.1.0 
user=> 

回答

7

(答案更新,以實際的解決方案明確,而這是有些隱藏在原...)

Windows上的類路徑字符串使用;作爲分隔符。例如。

java.exe -cp "C:\clojure-1.1.0\clojure.jar;C:\clojure-1.1.0\clojure-contrib.jar" clojure.main 

或者,你可以使用通配符來包括在類路徑中指定目錄中的所有jar文件(這是一個JDK 1.6此外,不會與1.5工作):

java.exe -cp "C:\clojure-1.1.0\*" clojure.main 

(我認爲在這裏使用雙引號在Windows中可以,雖然不能檢查...)

+0

謝謝!這不是完整的路徑,我只需使用分號而不是冒號作爲jar文件的分隔符! Aarg .. – StackedCrooked 2010-06-04 18:56:44

+0

哈!很好,你注意到了它 - 我注意到了分隔符的差異,甚至雙重檢查了它的文檔,然後因爲某些不可理解的原因忽略了在答案中明確提及它。更不用說,我也沒有注意到問題中的'C:\ clojure-1.1.0>'提示......我猜,一切都很好。 :-)爲了未來讀者的利益,我現在做了一個編輯。 – 2010-06-04 19:34:07