2014-12-04 120 views
1

我非常接近能夠做到這一點。我選擇了JDatePicker以瞭解需要什麼。步驟:從clojure使用java第三方庫的步驟

1) git clone https://github.com/JDatePicker/JDatePicker 
2) cd JDatePicker 
3) mvn package 

然後安裝localrepo不知道如果有一個更簡單的方法,但這似乎是方式由他人在互聯網上指出。

4) vi ~/.lein/profiles.clj 
5) {:user {:plugins [[lein-localrepo "0.5.3"]]}} 

裏面JDatePicker目錄所在的.jar文件的位置,使用localrepo給jdatepicker的座標,這樣雷音項目可以使用它。我使用雷音版本:

[email protected] ~/Documents/clojure/jdatepickertest $ lein version 
Leiningen 2.5.0 on Java 1.7.0_72 Java HotSpot(TM) 64-Bit Server VM 
[email protected] ~/Documents/clojure/jdatepickertest $ 

6) lein localrepo install jdatepicker-2.0.0-SNAPSHOT.jar org/jdatepicker 2.0.0 

創建一個新的Clojure項目,看看我是否可以訪問它

7) lein new jdatepickertest 
8) cd jdatepickertest 

修改project.clj文件,並添加[組織/ jdatepicker「2.0.0」]到依賴關係部分

9)  
(defproject jdatepickertest "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"} 
:dependencies 
     [ 
       [org.clojure/clojure "1.6.0"] 
       [org/jdatepicker  "2.0.0"] 
     ]) 

沒有這回沒有那麼假設一切順利

一個雷音DEPS 10

推出jdatepickertest目錄內REPL

11) lein repl 

現在,我嘗試使用jdatepicker從Clojure的,但我似乎無法訪問它?

12) 
nREPL server started on port 43286 on host 127.0.0.1 - nrepl://127.0.0.1:43286 
REPL-y 0.3.5, nREPL 0.2.6 
Clojure 1.6.0 
Java HotSpot(TM) 64-Bit Server VM 1.7.0_72-b14 
    Docs: (doc function-name-here) 
      (find-doc "part-of-name-here") 
    Source: (source function-name-here) 
Javadoc: (javadoc java-object-or-class-here) 
    Exit: Control+D or (exit) or (quit) 
Results: Stored in vars *1, *2, *3, an exception in *e 
user=> (clojure-version) 
"1.6.0" 
user=> (require '[jdatepicker :as datepicker]) 
FileNotFoundException Could not locate jdatepicker__init.class or jdatepicker.clj on classpath: clojure.lang.RT.load (RT.java:443) 
user=> (require '[org.jdatepicker :as datepicker]) 

FileNotFoundException Could not locate org/jdatepicker__init.class or org/jdatepicker.clj on classpath: clojure.lang.RT.load (RT.java:443) 
user=> 

回答

4

你不需要雷音,localrepo對於這一點,就足夠了指定您project.clj

[org.jdatepicker/jdatepicker "1.3.4"] 

require Maven的座標是Clojure的命名空間。 Java類將在使用時在類路徑中查找,如果您更喜歡使用非限定類名,則可以使用import

(import org.jdatepicker.JDatePicker) 

之後,你可以繼續通過互操作使用JDatePicker就像任何其他的Java庫。

+0

快速問題,我如何在面板內實例化JDatePicker並顯示它? – Ivan 2014-12-04 21:08:44

+0

[clojure.org]的指南(http://clojure.org/java_interop)非常好。查看你想使用的構造函數,並從Clojure中調用它。 '(JDatePicker。)' – noisesmith 2014-12-04 21:11:13

+0

請看這個問題http://stackoverflow.com/questions/27304476/simple-java-interop-from-clojure – Ivan 2014-12-04 21:30:55