Clojure 自定义 Java 互操作

Clojure custom Java Interop

我正在寻找有关将自定义 Java 文件集成到 Clojure 项目中的最佳文档和信息。我查看了项目Enlight,发现文件都是/src/main/java目录下的.java个文件。不幸的是它不使用 Leiningen(我正在使用的)所以我看不到它是如何被称为 java 文件的。

假设我想使用来自 Clojure 的大型 Java 项目,例如 MALLET,它被抽象到遗忘状态,无法像 public static void main () 这样的标准、主要、主要入口点成立。我是否只是将每个 .java 文件转储到我的类路径中并希望得到最好的结果?

要在 Leiningen 项目中包含您自己的 .java 文件:

(defproject my-project "0.0.1-SNAPSHOT"
  ; ...
  :java-source-paths ["src/main/java" "src_other/java"]) ; It's up to you how to structure paths

在此设置中,您的 .java 文件编译将由 Leiningen 管理。

要包含某些 Maven 存储库中可用的现有 Java 项目,只需添加依赖项。对于 MALLET,它看起来像:

(defproject my-project "0.0.1-SNAPSHOT"
  ; ...
  :dependencies [[cc.mallet/mallet "2.0.7"]])

最后,如果目标是包含私有 jar 文件 - 最好的选择是创建本地 Maven 存储库。

在所有这些情况下,您都可以进行正常的 Java <-> Clojure 互操作。