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

または、ワイルドカードを使用して、クラスパスの指定されたディレクトリにあるすべてのjarを含めることができます(これはJDK 1.6の追加であり、1.5では機能しません)。

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

(ここで二重引用符を使用することはWindowsでは問題ないと思いますが、確認することはできません...)

于 2010-06-04T18:39:13.237 に答える