2017-02-02 8 views
0

私は最初のclojure leiningenプロジェクトを構築しようとしていますが、私のコードでは特定のJavaクラスを使用している問題があります。java libをclojureにインポートすると、どのように動作しますか?

コーディング中に、私は特定の機能を探していて、DatatypeConverter(http://docs.oracle.com/javase/7/docs/api/javax/xml/bind/DatatypeConverter.html)を見つけました。 次に、ライブラリをインポートする方法を理解しなければなりませんでした。私はMavenについて何も知らないけど、幾分(教育を受けた?)私はそこにある図書館を探すべきだと推測した。https://search.maven.org/

だから私は私のproject.cljファイルのために書いてしまった何があります:

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

とI:

(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マクロ呼び出しであります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

は、あなたのMavenリポジトリ(.m2ディレクトリ)の内部を見てみましょう小文字の 'T' DatatypeConverter

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

を試してみてください。そこにjarファイルがあります。そのjarの.classファイルを見てください。

DatatypeConverter.class 

これは、小文字の「t」を使用する必要があることを示す1つの方法です。

0

また、あなたは、パッケージの複数のクラスを追加することができます

(:import (java.io File Bits BufferedInputStream)) 
関連する問題