由于某些原因,我不能让clojure REPL与jline一起工作,我所做的是git克隆github上的clojure存储库,然后运行ant来构建它,然后我使用clojure.jar将jline-0.9.94.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 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开始一个项目。
发布于 2010-07-11 21:48:29
今天我解决了同样的问题,从/Library/Java/Extensions中删除了一个冗余的jline*.jar,只在CLASSPATH中留下了一个jline安装。
更长的解释:我试图构建labrepl,它将其所有依赖项安装在子目录lib中,但我之前通过将.jar文件复制到/Library/Java/Extensions来设置jline。Apparently,java.lang.ClassLoader不能处理两个jline安装,并且只要在两个位置有可用的安装,启动Clojure REPL的命令行将无法找到jline.ConsoleRunner和clojure.main类中的后一个,这取决于它们被给予java命令的顺序。
我希望这能帮到你。
发布于 2010-07-10 19:49:40
请参阅我在我的fork上安装的替代说明:
http://github.com/jedschneider/leiningen
我发送了一个更新自述文件的请求,但是没有得到响应。一旦你安装了lein,你就可以把bin/leiningen.sh放在你的~/bin中,然后在任何地方调用它。我在我的.bash_profile上放了一个快捷方式
alias lein="~/bin/leiningen.sh"
然后调用lein repl来启动一个外壳程序
还可以看看labrepl,这是一个很棒的学习工具。
http://github.com/relevance/labrepl
发布于 2010-07-10 21:13:08
您的java ...命令看起来很好,我会再次检查是否所有的jars都在您认为它们应该在的位置(并且它们是您认为的jars,即clojure.jar实际上是您在本地构建的jars,而不是某个非常过时的jars)。
如果你想在lein repl上使用Leiningen,那也是可能的。请注意,说它“维护自己的Clojure版本”是不准确的;Leiningen是一个构建工具,用作面向项目的工作流的一部分,而单独的Clojure jars是特定于项目的。要创建一个样例项目以供使用,可以在某个方便的地方使用lein new foo。然后,您将需要使用cd foo,使用lein deps获取您的Clojure & contrib ( lein new提供的project.clj框架已经包含了这两者的条目),并使用lein repl启动一个REPL。
最后,您可以使用新的cljr project;它有一个全面的自述文件,您很快就可以开始使用它,使用它,您可以在任何地方使用cljr repl来获取Clojure REPL,而不需要创建“项目”。
https://stackoverflow.com/questions/3218961
复制相似问题