【问题标题】:Steps in using a java third party library from clojure从 clojure 使用 java 第三方库的步骤
【发布时间】:2014-12-04 19:25:15
【问题描述】:

我非常接近能够做到这一点。我选择了JDatePicker 看看需要什么。步骤:

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"]]}}

在 .jar 文件所在的 JDatePicker 目录中,使用 localrepo 给 jdatepicker 一个坐标,以便 lein 项目可以使用它。我使用的是 lein 版本:

idf@idf-Satellite-C55t-A ~/Documents/clojure/jdatepickertest $ lein version
Leiningen 2.5.0 on Java 1.7.0_72 Java HotSpot(TM) 64-Bit Server VM
idf@idf-Satellite-C55t-A ~/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 文件并将 [org/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

在 jdatepickertest 目录中启动了一个 repl

11) lein repl

现在我尝试使用 clojure 中的 jdatepicker,但我似乎无法访问它?

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=> 

【问题讨论】:

    标签: java swing clojure leiningen


    【解决方案1】:

    你不需要 lein-localrepo,在你的 project.clj 中指定 maven 坐标就足够了

    [org.jdatepicker/jdatepicker "1.3.4"]
    

    require 用于 clojure 命名空间。 Java 类在使用时会在类路径中查找,如果您更喜欢使用非限定类名,可以使用import

    (import org.jdatepicker.JDatePicker)
    

    之后,您可以像使用任何其他 java 库一样通过互操作继续使用 JDatePicker

    【讨论】:

    • 快速提问,如何在面板中实例化 JDatePicker 并显示它?
    • clojure.org 的指南非常好。查找您要使用的构造函数,然后从 Clojure 调用它。 (JDatePicker. <args>)
    • 对于初学者,您没有导入实际使用的类。查看 java interop 的文档,它不是很复杂。
    • 查看更改。一旦你知道如何去做,一切都是显而易见的。这有点令人困惑。
    猜你喜欢
    • 2019-02-16
    • 2017-05-18
    • 1970-01-01
    • 2019-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多