2010-06-04 29 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