2010-07-10 75 views
6

由于某些原因,我无法使用jline获取clojure REPL,我做的是git克隆github上的clojure库,然后运行ant构建它,然后我下载jline-0.9.94。罐子与clojure.jar的目录,然后运行以下命令:clojure/lein REPL with jline

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上看到了同样的错误(它似乎保留了它自己的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努力开始一个项目。

+0

实际上,这个设置在几乎相同的环境(OSX,来自源代码,jline,同一命令行的Clojure)中适用于我。 – 2010-07-11 14:01:24

回答

3

我今天通过从/Library/Java/Extensions中删除多余的jline*.jar解决了同样的问题,只留下了一个跳线安装CLASSPATH

更详细的解释:我试图建立labrepl,它安装在其子目录lib所有的依赖关系,但我以前曾在.jar文件复制到/Library/Java/Extensions设立的JLine。 Apparently,java.lang.ClassLoader无法处理jline的两个安装,并且只要在两个地方有可用的命令行,启动Clojure REPL的命令行将无法找到类别jline.ConsoleRunnerclojure.main中的后一个,具体取决于它们的顺序到java命令。

我希望这会有所帮助。

+0

谢谢,现在一切正常,我无法相信简单的删除它解决了问题。 – 2010-07-11 18:41:05

+0

我也受到了打击。见[这个答案](http://stackoverflow.com/questions/4655852/why-is-my-javap-output-different-than-yours-for-the-same-jar-file/5530443#5530443)为另一个同一个问题的版本。 – Lyle 2011-07-29 04:34:02

1

看到我的其他说明对我的叉子安装:

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

+0

感谢您的好工具,我通过使用pyrtsa的方法得到了lein repl的工作。 – 2010-07-11 18:45:40

0

java ...命令看起来不错,我会仔细检查,如果所有的罐子,你认为他们应该(和他们是罐子你认为他们是,即clojure.jar实际上是一个是你本地建造的,而不是一些超级过时的)。

如果你想使用Leiningen的lein repl,那也是可能的。请注意,它说“维护自己的Clojure版本”并不准确; Leiningen是一个构建工具,用作面向项目工作流程的一部分,独立的Clojure罐子项目专用。要创建一个示例项目,请在lein new foo的某处方便。然后你需要cd foo,让你的Clojure & condit jars与lein depsproject.cljlein new提供的骨架已经包含两个条目),并开始REPL与lein repl

最后,您可以使用新的;它有一个全面的自述文件,它可以让你立即开始,并且可以通过它来说cljr repl可以在任何地方获得Clojure REPL,而无需创建“项目”。

+0

啊,顺便说一下,如果你想要一个新的Clojure版本,你最好去http://build.clojure.org/并从那里获取一个jar。如果你是从语言开始的 - 从你是否愿意的问题来看并不明显,但如果 - 你应该坚持1.1。 – 2010-07-10 13:37:31

+0

谢谢,我是初学者,所以我认为1.1中的所有功能都足以学习:) – 2010-07-11 18:43:52

0

我遇到了同样的问题。 jline.ConsoleRunner(至少关于我使用的jline-0.9.5)似乎无法在从'java'命令的-cp选项添加到类搜索路径的路径中找到类文件。这意味着它在当前目录中找不到任何类。我通过在/ Library/Java/Extensions /下复制clojure.main解决了这个问题。