出于某种原因,我无法使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
来解决了相同的问题,而在CLASSPATH
中仅保留了一个jline安装。
更长的解释:我正在尝试构建labrepl,它将所有依赖项安装在子目录lib
中,但是我之前已经通过将.jar文件复制到/Library/Java/Extensions
来设置了jline。 Apparently和java.lang.ClassLoader
无法处理两次jline的安装,并且只要在两个地方都可以使用jline,启动Clojure REPL的命令行将无法找到类jline.ConsoleRunner
和clojure.main
的后一个,具体取决于给定的顺序到java
命令。
我希望这有帮助。