[英]importing java lib in clojure, how does it work?
我正在尝试构建我的第一个clojure leiningen项目,但是在代码中使用特定的Java类时遇到了问题。
在进行编码时,我正在寻找一种特定的功能,并找到了有关DatatypeConverter的信息( http://docs.oracle.com/javase/7/docs/api/javax/xml/bind/DatatypeConverter.html )。 然后,我不得不弄清楚如何导入该库。 我对Maven一无所知,但最终还是有些受过教育(受过教育?),我猜我应该在https://search.maven.org/那里找到库。
因此,我最终为我的project.clj文件写了些什么:
(defproject game-backend "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:main game-backend.core
:dependencies [
[org.clojure/clojure "1.8.0"]
[javax.xml.bind/jaxb-api "2.2.12"]
])
这是我的core.clj文件中的ns宏调用:
(ns game-backend.core
(:require [clojure.java.io])
(:import
(java.security DigestInputStream)
(java.io FileInputStream)
(javax.xml.bind DataTypeConverter)
)
)
当我lein run
时,出现以下错误(在某个时间点下载了程序包): Exception in thread "main" java.lang.ClassNotFoundException: javax.xml.bind.DataTypeConverter, compiling:(game_backend/core.clj:1:1)
我(不知道我做错了多少步骤(所有步骤?)。能否让我知道应该怎么做?
尝试使用小写的' t'DatatypeConverter
(ns game-backend.core
(:require [clojure.java.io])
(:import
(java.security DigestInputStream)
(java.io FileInputStream)
(javax.xml.bind DatatypeConverter)
)
)
看一下您的Maven存储库(.m2目录)。 您将可以在其中找到jar文件。 然后查看该jar中的.class文件。
DatatypeConverter.class
这是发现您应该使用小写字母“ t”的一种方法。
您还可以添加一个包的多个类:
(:import (java.io File Bits BufferedInputStream))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.