在 Clojure 项目中包含本地 jar 文件

Including local jar file in Clojure project

我已经使用 leiningen 插件 localrepo 将我自己的 java class 安装为 jar 文件。这似乎工作正常,因为它被安装到 ~/.m2 中,如下面的命令所示。

lein localrepo list | grep myJunk
$ myJunk/exp (1.0.0) 

然后我在 project.clj

中包含以下行
[myJunk/exp "1.0.0"]

最后,我在 .clj 文件中包含了以下内容。

(ns exp.exp-test
  (:use [exp.core]
        [clojure.test])
  (:import [com.curry.expenses Expense]))

当我尝试 运行 导入时,出现以下错误:

java.lang.ClassNotFoundException: com.curry.expenses.Expense

这是我的 java class 的开头,我从中生成了 jar 文件。

package com.curry.expenses;

public class Expense { ... }

现在我的问题是我缺少什么才能在我的 Clojure 项目中使用这个 class?

更新: 这是生成的.pom文件

的内容
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>myJunk</groupId>
  <artifactId>exp</artifactId>
  <version>1.0.0</version>
  <name>exp</name>
</project>

好的,所以我们发现了至少一个错误。

您有一个项目,在该项目中有一个 class FooBar.java 和一个命名空间 foo.bar.baz 那么预计文件 Foobar.java 位于文件夹结构中像这样:foo/bar/baz 镜像命名空间,很可能位于 src 文件夹中。

从中生成一个 jar 也将在 jar 内具有该路径,在 foo/bar/baz 下的路径内将是 FooBar.class.

这不是 clojure 特有的,而是 java 通常的,clojure 需要相同的文件夹结构。