2014-12-04 6 views
1

Я очень близок к возможности сделать это. Я выбрал JDatePicker, чтобы посмотреть, что нужно. Шаги:Шаги по использованию библиотеки сторонних разработчиков java от clojure

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 координаты так, что LEIN проекты могут использовать его. Я использую LEIN версии:

[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"] 
     ]) 

сделал LEIN Deps, которые возвращали ничто так не предполагается, все шло хорошо

10) lein deps 

начал Repl внутри директории jdatepickertest

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

Вам не нужно LEIN-localrepo для этого было бы достаточно, чтобы указать координаты Maven в вашем project.clj

[org.jdatepicker/jdatepicker "1.3.4"] 

require для Clojure пространств имен. Классы Java будут проверяться в пути к классам при их использовании, и вы можете использовать import, если вы предпочитаете использовать неквалифицированное имя класса.

(import org.jdatepicker.JDatePicker) 

После этого вы можете продолжить использовать JDatePicker через Interop, как и любой другой библиотеки Java.

+0

Быстрый вопрос, как создать экземпляр JDatePicker внутри панели и отобразить его? – Ivan

+0

Руководство на [clojure.org] (http://clojure.org/java_interop) довольно хорошо. Посмотрите, какой конструктор вы хотите использовать, и вызовите его из Clojure. '(JDatePicker. )' – noisesmith

+0

Пожалуйста, ознакомьтесь с этим вопросом http://stackoverflow.com/questions/27304476/simple-java-interop-from-clojure – Ivan

Смежные вопросы