从clojure使用exiftool java库

时间:2015-10-10 04:05:47

标签: clojure leiningen exiftool

我试图在基于leiningen的clojure项目中包含exiftool for java。这个库在中央不可用,所以我在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"]])

exiftool for java不提供校验和,网站警告:

"注意:目前我们没有为我们的存储库中的文件提供校验和,因此您将看到[警告]校验和验证失败'来自Maven的消息,但可以安全地忽略它们。"

果然,lein deps给了我一个错误,虽然我不相信它是安全的忽略:

"从The Buzz Media Maven资源库中检索com / thebuzzmedia / exiftool-lib / 1.1 / exiftool-lib-1.1.pom 无法传输工件com.thebuzzmedia:exiftool-lib:pom:1.1来自/来自Buzz Media Maven存储库(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中访问此类?

1 个答案:

答案 0 :(得分:1)

首先,您要导入的类是:

com.thebuzzmedia.exiftool.ExifTool

此外,默认情况下,如果校验和没有验证,则leiningen会失败。您希望:repositories键看起来像这样:

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

如果您愿意,也可以将其设置为:ignore。请参阅sample leiningen project