我只是学习如何lein,并且我想从Java源代码中使用deftype在Clojure源代码中创建的类.这在基础教程中没有涉及,我无法使其正常工作.
问题是Java源代码无法导入Clojure类,因为它尚未编译.并且Clojure类未编译,因为Java源会中止编译.
我给出一个最小的例子:
创建一个新项目:
lein new app javafoo
Run Code Online (Sandbox Code Playgroud)添加 project.clj
:aot :all
:java-source-paths ["src/java"]
Run Code Online (Sandbox Code Playgroud)投入src/javafoo/core.clj:
(ns javafoo.core)
(deftype PPoint [x y])
Run Code Online (Sandbox Code Playgroud)投入src/java/JavaFoo.java:
package foo.java;
import javafoo.core.PPoint;
public class JavaFoo {
public static void main(String[] args) {
System.out.println("JavaFoo");
}
}
Run Code Online (Sandbox Code Playgroud)尝试编译
lein compile
Run Code Online (Sandbox Code Playgroud)它失败了package javafoo.core doesn't exist.所以现在我必须这样做
:java-source-paths:java-source-paths它终于奏效了.有没有办法让它从一开始就有效?
将此行添加到您的project.clj:
:prep-tasks [["compile" "javafoo.core"] "javac"]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
466 次 |
| 最近记录: |