我只是在学习如何lein
,我想从 Java 源deftype
中使用 Clojure 源中创建的类。这在基本教程中没有涉及,我无法让它正常工作。
问题是 Java 源代码无法导入 Clojure 类,因为它还没有被编译。而且 Clojure 类没有被编译,因为 Java 源代码中止了编译。
我举一个最小的例子:
创建一个新项目:
lein new app javafoo
添加
project.clj
:aot :all :java-source-paths ["src/java"]
放入
src/javafoo/core.clj
:(ns javafoo.core) (deftype PPoint [x y])
放入
src/java/JavaFoo.java
:package foo.java; import javafoo.core.PPoint; public class JavaFoo { public static void main(String[] args) { System.out.println("JavaFoo"); } }
尝试编译
lein compile
它失败了package javafoo.core doesn't exist
。所以现在我必须
- 注释掉
:java-source-paths
- 编译
- 取消注释
:java-source-paths
- 编译
它终于奏效了。有没有办法让它从一开始就起作用?