2017-02-02 64 views
0

我想構建我的第一個clojure leiningen項目,但我有一個問題在我的代碼中使用特定的java類。在clojure中導入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) 
) 
) 

,當我tun lein run我得到以下錯誤(在某個時間點下載了一個包):Exception in thread "main" java.lang.ClassNotFoundException: javax.xml.bind.DataTypeConverter, compiling:(game_backend/core.clj:1:1)

我(我不知道我做了多少錯誤的步驟(他們都是?)。輕鬆地讓我知道應該怎麼做?

+0

你試過'雷音clean''雷音因爲你添加deps''[javax.xml.bind中/ JAXB的API 「2.2.12」 ]'到你的project.clj文件中? –

+0

看到您的評論後,我做了,但它沒有幫助(並沒有新的下載)。 –

回答

3

嘗試一個小寫的 'T' DatatypeConverter

(ns game-backend.core 
    (:require [clojure.java.io]) 
    (:import 
    (java.security DigestInputStream) 
    (java.io FileInputStream) 
    (javax.xml.bind DatatypeConverter) 
) 
) 
1

看看你的Maven倉庫(目錄的.m2)內。你將能夠在那裏找到jar文件。然後查看該jar中的.class文件。

DatatypeConverter.class 

這是找到你應該使用小寫字母「T」的一種方式。

0

你也可以添加一個包的多個類:

(:import (java.io File Bits BufferedInputStream))