我使用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>
答案 0 :(得分:2)
好的,我们发现至少有一个错误。
您有一个项目,并且该项目内部是一个具有名称空间FooBar.java
的类foo.bar.baz
,那么文件Foobar.java
应该是这样的文件夹结构:{{1镜像命名空间,最有可能位于foo/bar/baz
文件夹中。
从中生成jar也会在jar内部和src
下的路径内部具有该路径。
这对于clojure来说并不是特定的,但对于一般的java而言,clojure需要相同的文件夹结构。