1

我下载了 Clojure 1.2 https://github.com/downloads/clojure/clojure/clojure-1.2.0.zip,将其解压缩到 /Library 目录下,创建 CLOJURE_HOME,将 $CLOJURE_HOME/script 添加到我的 $PATH 中。

当我尝试运行位于脚本目录下的 clj 或 repl 脚本时,我收到此错误:

线程“main”中的异常 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)

好的,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

总结:查看cljrcakeleiningen

Clojure 社区中的大多数人都没有“安装”Clojure。大多数人使用构建工具和/或 cljr。将 Clojure 安装到一个中心位置没有多大意义,因为不可避免地需要依赖管理,而且 jar 无论如何都会被复制到任何地方。无论如何,让工具为您处理类路径要容易得多。

于 2010-12-09T14:29:27.927 回答
0

clojure.zip 文件存在,因此编写工具的人将有一个地方存放他们的工具来获取他们需要的部分;)

对于不编写工具的人,他们要么使用 github 的最新分支工作,要么使用 git pull 获得 Clojure,或者使用上面提到的 liningen、cake、cljr、逆时针(eclipse)、la clojure(intellij),或网豆。

于 2010-12-09T19:29:18.877 回答