【问题标题】:Importing clojure functions from jars从 jar 中导入 clojure 函数
【发布时间】:2011-03-19 17:42:47
【问题描述】:

我在玩 Clojure,但不知道如何从 clojure-contrib.jar 导入函数。从this 回答工作,我正在执行以下操作:

像这样运行 REPL:

 java -cp clojure.jar:clojure-contrib.jar clojure.main

然后尝试导入一个函数:

user=>  (use '[clojure-contrib.duck-streams :only (writer reader)])

它不起作用,我收到以下错误:

java.io.FileNotFoundException: 无法在类路径中找到 clojure_contrib/duck_streams__init.class 或 clojure_contrib/duck_streams.clj: (NO_SOURCE_FILE:0)

用点代替破折号也行不通:

user=>  (use '[clojure.contrib.duck-streams :only (writer reader)])

我得到了几乎相同的错误:

java.io.FileNotFoundException: 无法在类路径中找到 clojure/contrib/duck_streams__init.class 或 clojure/contrib/duck_streams.clj: (NO_SOURCE_FILE:0)

我做错了什么?

【问题讨论】:

  • 我的大部分/所有问题都来自损坏的 jar。

标签: clojure clojure-contrib


【解决方案1】:

clojure.jarclojure-contrib.jar 在您当前的工作目录中吗?如果没有,则需要在 CLASSPATH 中指定 JAR 文件的完整路径。

【讨论】:

  • 当我测试这个确切的例子时,是的,它们在我的工作目录中。指定他们的完整路径不会改变我得到的错误。
  • 将完整路径“/usr/lib/clojure-contrib-1.1.0/clojure-contrib.jar”添加到我的 CLASSPATH 为我做了。这是我的 CLASSPATH 上唯一的东西;没关系。我以为 jar 文件会被自动拾取,我想我错了:en.wikipedia.org/wiki/….
【解决方案2】:

这应该可以工作

(use 'clojure.contrib)

我现在没有 clojure 方便检查,但是

(use 'clojure.contrib :only (writer reader))

应该也可以

【讨论】:

  • 我收到以下错误:java.io.FileNotFoundException: 无法在类路径上找到 clojure/contrib__init.class 或 clojure/contrib.clj: (NO_SOURCE_FILE:0)
  • 我重新下载了 clojure-contrib.jar,现在可以使用了。我的 jar 损坏或无法使用。
  • 这个答案是完全错误的。没有 clojure.contrib 命名空间,所以(use 'clojure.contrib) 不可能做任何有用的事情。
【解决方案3】:

它是 clojure.contrib,而不是 clojute-contrib。注意点与破折号。

【讨论】:

  • 试过了,还是不行。更新了问题以包含该测试。
  • 您在 Windows 上吗?然后你必须使用带有分号而不是冒号的java -cp clojure.jar;clojure-contrib.jar clojure.main
  • 我不敢相信在 ubuntu 上运行一个带有必要 jar 的简单 clojure 这么难
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-17
  • 1970-01-01
相关资源
最近更新 更多