【发布时间】:2014-10-17 14:03:09
【问题描述】:
我在将 clojure 和 java 文件混合编译到一个包中时遇到了麻烦。这些文件之间存在依赖关系,如果它们都是 java 文件,java 编译器可以处理所有这些。为了具体化,我想创建一个名为 pkg 的包,其中包含 4 个文件:A.java、b.clj、c.clj 和 D.java。 a.java包含main并创建b.clj中声明的对象,b.clj调用c.clj中的函数并使用D类的对象。如何编写项目文件?
如果我使用
:prep-tasks ["javac" "compile"]
在项目文件中,然后我在编译 A.java 时收到一条抱怨 pkg.b 或 pkg.c 中的某些内容未定义。如果我使用
:prep-tasks ["compile" "javac"]
我收到了关于 pkg.D 类不存在的投诉。如果我尝试
:prep-tasks [["javac" "pkg/D.java"] "compile" "javac"]
即使我正确设置了 java-source-paths,它也找不到 pkg/D.java。
处理此问题的一种方法是创建 3 个包,一个包含 A.java,一个包含 b.clj 和 c.clj,一个包含 D.java。然后为 D.java 构建一个 jar,为 b 和 c 构建一个使用 D.jar 的 jar,为 A 构建一个使用 bc.jar 和 D.jar 的 jar。不过很丑。
【问题讨论】:
标签: java clojure interop leiningen