首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jline的clojure/lein REPL

使用jline的clojure/lein REPL
EN

Stack Overflow用户
提问于 2010-07-10 19:18:19
回答 4查看 3.1K关注 0票数 6

由于某些原因,我不能让clojure REPL与jline一起工作,我所做的是git克隆github上的clojure存储库,然后运行ant来构建它,然后我使用clojure.jar将jline-0.9.94.jar下载到目录中,然后运行以下命令:

代码语言:javascript
复制
java -cp jline-0.9.94.jar:clojure.jar jline.ConsoleRunner clojure.main

并得到以下错误:

代码语言:javascript
复制
    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)

以下是我当前目录中的文件:

代码语言:javascript
复制
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上的

代码语言:javascript
复制
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开始一个项目。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-07-11 21:48:29

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

更长的解释:我试图构建labrepl,它将其所有依赖项安装在子目录lib中,但我之前通过将.jar文件复制到/Library/Java/Extensions来设置jline。Apparentlyjava.lang.ClassLoader不能处理两个jline安装,并且只要在两个位置有可用的安装,启动Clojure REPL的命令行将无法找到jline.ConsoleRunnerclojure.main类中的后一个,这取决于它们被给予java命令的顺序。

我希望这能帮到你。

票数 3
EN

Stack Overflow用户

发布于 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

票数 1
EN

Stack Overflow用户

发布于 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,而不需要创建“项目”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3218961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档