我正在尝试使用其他jar文件中的函数。
我从书籍Programming Clojure 2nd Ed下载了样本源,并使用lein jar
命令创建了一个jar文件。
从this post中的提示,我将jar文件复制到lib/
目录中,然后我可以添加
project.clj中的:resource-paths ["lib/programming-clojure-1.3.0.jar"]
。
使用lein classpath
命令,我可以检查jar文件是否在类路径中。
使用lein repl
,我可以使用jar文件中的函数。
mire=> (require '[examples.introduction :as e])
nil
mire=> (take 10 examples.introduction/fibs)
(0 1 1 2 3 5 8 13 21 34)
我在src/
目录中创建了一个t.clj源代码,使用emacs src/t.clj &
启动了emacs,并使用M-x cider-jack-in
启动了REPL。
我编写了这段代码,并使用C-x C-e
执行了它。
(ns t (:require'[examples / introduction:as ex]))
但是,我收到一条消息,说找不到该文件。
java.io.FileNotFoundException: Could not locate introduction__init.class or introduction.clj on
classpath:
可能有什么问题?
答案 0 :(得分:1)
名称空间为examples.introduction
。此外,您不需要在ns
宏内引用向量。尝试:
(ns t
(:require [examples.introduction :as ex]))
查看ns
宏here的一些使用示例。
此外,通常在命名空间中至少有两个段。例如,你可以mynamespace.t
。