为什么我不能在我的 Clojure 文件中要求 Java 库?

Why can't I require a Java library in my Clojure file?

我让 leiningen 在公司的 Artifactory 存储库中找到了一个库,它似乎可以很好地下载它,但是当我打开尝试 require 它时,运行 lein run 的代码返回 FileNotFoundException

我的项目文件如下所示:

(defproject clj-test "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.8.0"]
             [com.ourgroup/library "1.0.0"]]
  :repositories [["releases" {:url "https://url-to-our-repo"
                          :username "username"
                          :password "password"}]]
  :main ^:skip-aot clj-test.core
  :target-path "target/%s"
  :profiles {:uberjar {:aot :all}})

我的单个代码文件如下所示:

(ns clj-test.core
  (:gen-class)
  (:require [library :as lib]))

(defn -main
  "I don't do a whole lot ... yet."
  [& args]
  (println "And now for something completely different..."))

您需要import一个class。要获取 class 的名称,请查看 jar 内部(或 Java 源代码)并找到构成完全限定的 Java 包和 class class 您需要导入的名称。

我已经编辑了这个。我之前的错误已通过评论更正:"You require namespaces; you import classes. Requiring a class is no good"。因此,对于 Java 互操作,您需要导入 classes,就像您编写 Java 源文件一样。