在 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 需要相同的文件夹结构。
我已经使用 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 需要相同的文件夹结构。