1

Clojure 1.2 https://github.com/downloads/clojure/clojure/clojure-1.2.0.zipをダウンロードし、/Library ディレクトリの下に展開し、CLOJURE_HOME を作成し、$CLOJURE_HOME/script を $PATH に追加しました。

script ディレクトリの下にある clj または repl スクリプトを実行しようとすると、次のエラーが発生します。

スレッド「メイン」での例外 java.lang.NoClassDefFoundError: jline/ ConsoleRunner 原因:​​ java.lang.ClassNotFoundException: jline.ConsoleRunner at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController. doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java: 301) java.lang.ClassLoader.loadClass(ClassLoader.java:248) で

OK、jline.jar は CLASSPATH にないので、clj と repl スクリプトをチェックしました:

CLASSPATH=src/clj:test:test-classes:classes/:script/jline-0.9.94.jar:../clojure-contrib/target/clojure-contrib-1.2.0-SNAPSHOT.jar

if [ -z "$1" ]; then 
   exec java -server jline.ConsoleRunner clojure.main 
else 
   SCRIPT=$(dirname $1) 
   export CLASSPATH=$SCRIPT/*:$SCRIPT:$CLASSPATH 
   exec java -Xmx3G -server clojure.main "$1" "$@" 
fi

$CLOJURE_HOME/script の下に jline.jar をダウンロードしましたが、それでも同じエラーが発生します。

これは私を質問に導きました:とにかくhttps://github.com/downloads/clojure/clojure/clojure-1.2.0.zip
の役割は何ですか? Clojureのインストールに使用することになっていますか? それとも単に clojure.jar をビルドして取得するだけですか? この方法でClojureをインストールすることについて誰も話していないことに気付きました。 何か不足していますか?


4

2 に答える 2

1

Clojure は JVM 言語であり、JVM クラスパスを処理する必要があります。これにより、「インストール」が少し扱いに​​くく、混乱します。このように自分でインストールするのではなく、cljr や cake などのツールを試してみてください。これについて、役立つかもしれないブログ投稿を書きました: http://blog.raynes.me/?p=48

要約: cljrcake、およびleiningenをチェックしてください。

Clojure コミュニティの大半の人々は、Clojure を「インストール」していません。ほとんどの人は、ビルド ツールや cljr を使用します。Clojure を中央の場所にインストールすることは、必然的に依存関係の管理が必要になる場合にあまり意味がありません。いずれにせよ、jar はどこにでもコピーされます。いずれにせよ、ツールにクラスパスを処理させる方がはるかに簡単です。

于 2010-12-09T14:29:27.927 に答える
0

clojure.zip ファイルが存在するので、ツールを作成する人は、ツールが必要なパーツを入手する場所を確保できます ;)

ツールを作成していない人は、github の最新のブランチに取り組んでいる/使用しているため、git pull で Clojure を取得するか、上記の liningen、cake、cljr、counterclockwise(eclipse)、la clojure (intellij) を使用しています。またはネットビーンズ。

于 2010-12-09T19:29:18.877 に答える