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

时间:2015-04-09 16:30:06

标签: clojure leiningen

我使用leiningen插件localrepo将我自己的java类安装为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

这是我生成jar文件的java类的开头。

package com.curry.expenses;

public class Expense { ... }

现在我的问题是为了能够在我的Clojure项目中使用这个类而缺少的是什么?

更新: 这是生成的.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>

1 个答案:

答案 0 :(得分:2)

好的,我们发现至少有一个错误。

您有一个项目,并且该项目内部是一个具有名称空间FooBar.java的类foo.bar.baz,那么文件Foobar.java应该是这样的文件夹结构:{{1镜像命名空间,最有可能位于foo/bar/baz文件夹中。

从中生成jar也会在jar内部和src下的路径内部具有该路径。

这对于clojure来说并不是特定的,但对于一般的java而言,clojure需要相同的文件夹结构。