【发布时间】:2014-01-24 17:20:49
【问题描述】:
在我拥有的 .clj 文件中(使用 '(incanter core io ...))。尝试评估该代码时会发生此错误:FileNotFoundException 无法在类路径上找到 clojure/core/matrix__init.class 或 clojure/core/matrix.clj:clojure.lang.RT.load (RT.java:443)。如果我将代码更改为:(使用'(incanter)),那么一切都可以,除了没有必要的命名空间可用,这是可以预料的。在过去的 18 个月里,我一直非常愉快地使用带有 clojure 插件的 jEdit,并仔细验证了我的类路径是正确的。我尝试(使用'...math.combinatorics)和csv & json jars(这些都正常)来合理地确定这不是jEdit配置问题。我在 clojure/core jar 中寻找“矩阵”,但没有找到。非常感谢您对解决此问题的任何帮助。
经过进一步调查: 我想我找到了问题的根源:在 clatrix-0.3.0 命名空间声明中需要 clojure.core.matrix。当我从类路径中删除 clatrix 并评估(使用 '(incanter core ...))时,会发生此错误: FileNotFoundException Could not locate clatrix/core__init.class or clatrix/core.clj on classpath: clojure.lang.RT.load ( RT.java:443)。将 clatrix 添加到类路径时,会发生我原来的错误(即找不到 clojure.core.matrix)。 Incanter-core 确实有一个 Matrix.class 文件。似乎 incanter 依赖于 clatrix,而 clatrix 又依赖于 clojure.core。不存在的矩阵。如何解决这个问题或有解决方法?
【问题讨论】:
-
clojure.core.matrix 不附带 clojure.core。
-
另外,如果你使用leiningen来解析依赖并构建类路径,它会自动找到你的各种库需要的库。
-
我使用 leiningen 进行完整构建。我发现 jEdit 是一个简单实用的编辑器,用于开发和测试 clojure 函数和模块。
-
那你需要手动解决你的依赖。
-
关于您的编辑:您仍然不明白。 Clojure.core.matrix 存在。我在上面链接到它。如果你使用 lein lein 会自动提供。如果您决定手动解决依赖关系,那么您需要找到它并将其放入类路径中。