在 clojure 中导入 java lib,它是如何工作的?
importing java lib in clojure, how does it work?
我正在尝试构建我的第一个 clojure leiningen 项目,但我在使用代码中的特定 java class 时遇到问题。
在编码时,我一直在寻找特定的功能并发现了 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)
)
)
当我 tun 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))
我正在尝试构建我的第一个 clojure leiningen 项目,但我在使用代码中的特定 java class 时遇到问题。
在编码时,我一直在寻找特定的功能并发现了 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)
)
)
当我 tun 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))