5

我似乎找不到一种方法来启动包含 contrib 库的 Clojure REPL。如果我正确理解了文档,那么这个命令应该这样做:

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文件夹中。

有人可以帮我做对吗?

更新
感谢 Michał 的帖子,我注意到我的错误是使用冒号,而我必须使用分号。这有效:

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

1 回答 1

7

(答案已更新以使实际解决方案明确,而它在原始解决方案中有些隐藏...)

Windows 上的类路径字符串;用作分隔符。例如

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

或者,您可以使用通配符在类路径中的给定目录中包含所有 jars(这是 JDK 1.6 的补充,不适用于 1.5):

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

(我认为在 Windows 中使用双引号是可以的,但无法检查......)

于 2010-06-04T18:39:13.237 回答