我正在尝试clojure http://www.clojure.org我正在尝试了解如何使用第三方库。我已经能够下载一些源代码,使用 leiningen 将其捆绑到 jar 文件中,将其放入我的类路径中并在我的脚本中(使用“lib.etc”)。我还尝试过 java.lang.* 中的对象。
不过,我在 3rd party java 方面还没有取得任何成功。
$ java -cp clojure.jar:clojure-contrib.jar:com.jcraft.jsch_0.1.31.jar clojure.main
Clojure 1.1.0
user=> (require 'com.jcraft.jsch)
java.io.FileNotFoundException: Could not locate com/jcraft/jsch__init.class or com/jcraft/jsch.clj on classpath: (NO_SOURCE_FILE:0)
$ jar tf com.jcraft.jsch_0.1.31.jar | egrep "(init|clj)"
$
看起来必须创建 __init.class 或 .clj 文件。这是真的,还是有一些替代方法来加载纯java类?
对于java类使用import
:
(import java.util.ArrayList)
;// or use a prefix for multiple classes:
(import [java.util ArrayList Collection])
;// or preferably in the ns declaration:
(ns my.lib
[:import [java.util ArrayList Collection]])
user=> (def al (ArrayList.))
#'user/al
user=> (.add al "hi")
true
user=> (.size al)
1
请注意,包名和类名不需要加引号,因为import
是一个宏。
也没有等同于import java.util.*;
您需要指定要导入哪些类。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)