题
由于某种原因,我无法让 clojure REPL 与 jline 一起使用,我所做的是 git 从 github 克隆 clojure 存储库,然后运行 ant 来构建它,然后我将 jline-0.9.94.jar 下载到包含 clojure.jar 的目录中,然后运行以下命令:
java -cp jline-0.9.94.jar:clojure.jar jline.ConsoleRunner clojure.main
并得到以下错误:
Exception in thread "main" java.lang.ClassNotFoundException: clojure.main
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:317)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:375)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
at jline.ConsoleRunner.main(Unknown Source)
这是我当前目录中的文件:
vvshs-macbook-2:clojure vvsh$ ls
build.xml clojure-sources-1.2.0-master-SNAPSHOT.jar epl-v10.html src
classes clojure-sources.jar jline-0.9.94.jar test
clojure-1.2.0-master-SNAPSHOT.jar clojure.iml pom-template.xml
clojure-slim-1.2.0-master-SNAPSHOT.jar clojure.jar pom.xml
clojure-slim.jar doc readme.txt
vvshs-macbook-2:clojure vvsh$
我在 clojure 1.1 和 lein repl 上遇到了同样的错误(lein 似乎维护着自己的 clojure 版本)。
顺便说一句,这是在 mac ox 10.5.8 上
java version "1.5.0_24"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_24-b02-357-9M3165)
Java HotSpot(TM) Client VM (build 1.5.0_24-149, mixed mode, sharing)
有人知道出了什么问题以及如何解决吗?因为我真的想让 lein repl 开始一个项目。
解决方案
我今天通过删除多余的解决了同样的问题 jline*.jar
从 /Library/Java/Extensions
, ,只留下一个 jline 安装 CLASSPATH
.
更长的解释: 我试图建立 拉布雷普尔, ,它将所有依赖项安装在子目录中 lib
, ,但我之前通过将 .jar 文件复制到来设置 jline /Library/Java/Extensions
. 显然, java.lang.ClassLoader
无法处理 jline 的两个安装,并且只要两个地方都有可用的 jline,启动 Clojure REPL 的命令行将无法找到后一个类 jline.ConsoleRunner
和 clojure.main
, ,取决于它们被给予的顺序 java
命令。
我希望这有帮助。
其他提示
请参阅我在我的叉子上安装的替代说明:
http://github.com/jedschneider/leiningen
我发送了拉取请求来更新自述文件,但没有得到回复。安装 lein 后,您可以将 bin/leiningen.sh 放入 ~/bin 中并在任何地方调用它。我在我的 .bash_profile 上添加了快捷方式
alias lein="~/bin/leiningen.sh"
然后打电话 lein repl
启动 shell
还可以查看 labrepl,这是一个很棒的学习工具。
你的 java ...
命令看起来不错,我会仔细检查所有罐子是否都在您认为应该在的位置(并且它们在 这 你认为它们是罐子,即 clojure.jar
实际上是您在本地构建的,而不是一些超级过时的)。
如果您想使用莱宁根 lein repl
, ,这也是可能的。请注意,说它“维护自己的 Clojure 版本”并不准确。Leiningen 是一个构建工具,用作面向项目的工作流程的一部分,并且单独的 Clojure jar 是特定于项目的。要创建一个示例项目来玩,比如说 lein new foo
方便的地方。那么你需要 cd foo
, ,获取您的 Clojure 和 contrib jars lein deps
(这 project.clj
骨架由提供 lein new
已经包含两者的条目)并启动 REPL lein repl
.
最后,您可以使用新的 cljr
项目;它有一个全面的自述文件,应该可以让您立即开始使用,有了它您就可以说 cljr repl
随时随地获取 Clojure REPL,无需创建“项目”。
我遇到了同样的问题。jline.consolerunner(至少关于我使用的jline-0.9.5)似乎无法在-cp选项的“java”命令中添加到类搜索路径的路径中找到类文件。这意味着它无法在当前目录中找到既不是类。我通过复制clojure.main / library / java / extensions来解决这个问题。