1

leiningen ベースの clojure プロジェクトに Java 用の exiftool を含めようとしています。このライブラリは中央では利用できないため、project.clj ファイルに :repository タグを含めました。

project.clj:

(defproject clojure-mongo "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"}
  :repositories {"The Buzz Media Maven Repository" "http://maven.thebuzzmedia.com"}
  :dependencies [[org.clojure/clojure "1.7.0"]
                 [com.novemberain/monger "3.0.1"]
                 [com.thebuzzmedia/exiftool-lib "1.1"]])

javaのexiftoolはチェックサムを提供せず、サイトはこれについて警告します:

「注: 現時点では、リポジトリ上のファイルのチェックサムを提供していないため、Maven から '[WARNING] Checksum validation failed' メッセージが表示されますが、無視しても問題ありません。」

案の定、lein deps はエラーを表示しますが、無視しても安全だとは確信していません。

「Buzz Media Maven リポジトリから com/thebuzzmedia/exiftool-lib/1.1/exiftool-lib-1.1.pom を取得中、Buzz Media Maven リポジトリとの間でアーティファクト com.thebuzzmedia:exiftool-lib:pom:1.1 を転送できませんでした ( http ://maven.thebuzzmedia.com ): チェックサムの検証に失敗しました。リポジトリから利用可能なチェックサムがありません"

clojure コードで ExifTool クラスをインポートしようとすると、依然として ClassNotFoundException が発生します。

core.clj:

(ns clojure-mongo.core
  (:require [monger.core :as mg]
            [monger.collection :as mc])
  (:import [com.mongodb MongoOptions ServerAddress]
           org.bson.types.ObjectId
           com.thebuzzmedia.exiftool-lib.ExifTool))

clojure 内からこのクラスにアクセスするにはどうすればよいですか?

4

1 に答える 1

1

たとえば、インポートするクラスは次のとおりです。

com.thebuzzmedia.exiftool.ExifTool

また、デフォルトでは、チェックサムが検証されない場合、leiningen は失敗します。:repositoriesキーを次のようにします。

:repositories [["The Buzz Media Maven Repository" 
               {:url "http://maven.thebuzzmedia.com"  :checksum :warn}]]

必要に応じて設定することもでき:ignoreます。サンプル leiningen プロジェクトを参照してください。

于 2015-10-10T17:32:16.687 に答える