【问题标题】:help with running clojure, possible classpath issue帮助运行 clojure,可能的类路径问题
【发布时间】:2010-09-16 18:06:41
【问题描述】:
admin@apollo:~/clojure$ clojure
Clojure 1.0.0-
user=> (require 'clojure.contrib.str-utils)
java.io.FileNotFoundException: Could not locate clojure/contrib/str_utils__init.class or clojure/contrib/str_utils.clj on classpath:  (NO_SOURCE_FILE:0)
user=> 

我在安装 clojure 时做错了什么?为什么 clojure 找不到我的 java 类?我已经安装了 java。

admin@apollo:~/clojure$ sudo apt-get install sun-java6-jre sun-java6-jdk
sudo: unable to resolve host apollo
Reading package lists... Done
Building dependency tree       
Reading state information... Done
sun-java6-jre is already the newest version.
sun-java6-jdk is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 15 not upgraded.


admin@apollo:~/clojure$ java -version
    java version "1.6.0_20"
    Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
    Java HotSpot(TM) 64-Bit Server VM (build 16.3-b01, mixed mode)
    admin@apollo:~/clojure$ 

请帮忙!谢谢!

【问题讨论】:

  • 您从哪里“获得”Clojure,您是如何“安装”它的?

标签: java clojure classpath


【解决方案1】:

学习手动解决这个问题非常棒,因为了解类路径会让世界变得更美好。在实践中,许多 Clo​​jurian 使用 leiningen、maven 或 cake。

我个人建议使用leiningen:

不使用自动化工具的原因有很多,而且这些东西并不适合所有人。即使对于简单的单线,设置它所花费的时间对我来说也是值得的。

【讨论】:

  • 还有 cljr 项目看看。
  • 下载完lein脚本后是不是也需要运行“lein self-install”?
  • 我虽然是这样,但当我检查 gihub 上的 leiningen 页面时,该步骤不在入门说明中。不要认为运行 lein self-install 会造成伤害
【解决方案2】:

str utils 是 clojure-contrib 附带的。它不是标准的 java 库。所以,简单地安装java不会有帮助。当您启动 clojure 时,请确保在类路径中提到了 clojure-contrib jar。您可以从 clojure.org 获取最新的(1.2) clojure 和 clojure-contrib jar

例如这就是我启动 REPL 的方式

java -server -cp ~/clojure-1.2.0.jar:~clojure-contrib-1.2.0.jar:. clojure.main --repl

【讨论】:

  • 感谢您的帮助,您能说得更具体些吗?我尝试运行该行并得到:pastebin.com/wjBrgDwM
  • 该命令特定于我的机器。调用 repl 的一般方法是:java -cp {path-to-clojure-jar}:{path-to-clojure-contrib-jar}:。 clojure.main --repl
  • @vick:您需要将~/clojure-1.2.0.jar~clojure-contrib-1.2.0.jar(~/clojure-contrib...)位替换为系统上相关jar 的实际副本的路径。从问题文本中,我推测您在~/clojure 中有clojure.jar 的副本,因此您将使用~/clojure/clojure.jar;如果你把 contrib jar 放在同一个目录下,它的路径看起来会很相似。
  • 顺便说一句,如果你真的不想在类路径中包含当前目录,你可以跳过最后的:.
  • 我做了:updatedb;找到clojure-contrib-1.2.0.jar;它甚至找不到文件!如何安装这两个 jar 文件?
【解决方案3】:

我使用 maven 来处理所有依赖项,它很管用。

我在这里写了一篇博文: http://learnclojure.blogspot.com/2010/08/clojure-emacs-swank-slime-maven-maven.html 关于如何在新机器上从头开始设置工作的 clojure/slime 设置。大约需要一分钟。

无论如何,如果你想要的只是一个正在运行的 repl,那么你可以:

安装maven

从博文中获取 pom.xml,并将其放在一个目录中。

在该目录中运行 $ mvn clojure:repl

Maven 将下载您需要的所有内容并启动一个 repl,该 repl 应该启用 jline 以便它实际可用。

我知道这适用于 Ubuntu,它应该适用于所有其他 linuxes 和 mac osx。 有谁知道它是否也适用于 Windows?

但是如果你可以使用 emacs,clojure/emacs 和 slime 的组合是无与伦比的。 如果您有任何问题,请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多