所以..我有这个问题(标题中的那个)。为了给我做一个背景:
创建一个名为Carro的Java类:

public class Carro{
  public Carro(){}
  public void turnon(String sound){
     System.out.println(sound);
  }
}

我已经编译了:
javac Carro.java

并创建了一个.jar:
jar -cf Carro.jar Carro.class

因此,我创建了一个新的lein项目:
莱恩新测验

创建一个/lib目录,并将Carro.jar粘贴到其中。

test/src/目录中创建一个名为carro的文件夹,并创建一个名为car.clj的.clj文件:
(ns carro.car
  (:import [Carro] )
)

(defn callCarro []
  (let [car (new Carro)]
     (.turnon "vruuum!" car)
  )
)

所有这些之后,我编辑了project.clj文件,并在最后一个括号之后添加了:import [Carro]。

因此,当我使用lein repl运行项目时,出现以下错误:
    $ lein repl
    user=> (require 'carr.car :reload)
    CompilerException java.lang.IllegalArgumentException:
Unable to resolve classname: Carro, compiling:(carro/car.clj:6)

有解决这个问题的想法吗?

最佳答案

Leiningen 2依靠Maven来管理依赖项。版本1用于将jar复制到lib目录,但是此行为已删除(请参阅https://github.com/technomancy/leiningen/blob/stable/doc/FAQ.md)。如果您的项目需要特定的jar,最简单的方法是将该jar安装在本地Maven存储库中,然后让leiningen完成其余工作。

Maven(以及leiningen)需要一个版本,一个组和一个用于您使用的jar的 Artifact (请参阅https://github.com/technomancy/leiningen/blob/master/doc/TUTORIAL.md#artifact-ids-groups-and-versions)。因此,我们的第一步是将Carro.jar重命名为Carro-0.1.0.jar。为了使事情变得容易一些,让我们使用leiningen插件来完成其余的工作。将lein-localrepo插件添加到您的project.clj中,如下所示:

(defproject foo "0.1.0-SNAPSHOT"
  :dependencies [[org.clojure/clojure "1.4.0"]]
  :plugins [[lein-localrepo "0.4.1"]])

然后,您可以向leiningen询问Carro依赖项的坐标:
$ lein localrepo coords Carro-0.1.0.jar
Carro-0.1.0.jar Carro/Carro 0.1.0

最后一部分是安装到mvn存储库所需的信息:
$ lein localrepo install Carro-0.1.0.jar Carro/Carro 0.1.0

之后,该jar将安装在您的mvn存储库中:~/.m2/repository/Carro/Carro/0.1.0/Carro-0.1.0.jar。因此,最后,将新安装的依赖项添加到project.clj中:
(defproject foo "0.1.0-SNAPSHOT"
  :dependencies [[org.clojure/clojure "1.4.0"]
                 [Carro/Carro "0.1.0"]]
  :plugins [[lein-localrepo "0.4.1"]])

然后从代表:
$ lein repl
user=> (new Carro)
#<Carro Carro@7c04703c>

10-08 02:35