Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 莱宁根汇编顺序?_Clojure_Leiningen - Fatal编程技术网

Clojure 莱宁根汇编顺序?

Clojure 莱宁根汇编顺序?,clojure,leiningen,Clojure,Leiningen,我正在学习如何lein,我想使用Java源代码 由Clojure源中的deftype创建的类。这在基础课程中没有涉及 教程,我不能让它正常工作 问题是Java源代码无法导入Clojure类,因为它没有 还没有汇编。并且Clojure类不会被编译,因为编译被中止 由Java源代码提供 我举一个简单的例子: 使用以下内容创建新项目: lein new app javafoo 添加到project.clj :aot :all :java-source-paths ["src/java"] 放入

我正在学习如何
lein
,我想使用Java源代码 由Clojure源中的
deftype
创建的类。这在基础课程中没有涉及 教程,我不能让它正常工作

问题是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])
    
    :prep-tasks [["compile" "javafoo.core"] "javac"]
    
  • 放入
    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
    
  • 它失败,因为包javafoo.core不存在。 所以现在我必须

  • 注释掉
    :java源路径
  • 编撰
  • 取消注释
    :java源路径
  • 编撰

  • 它终于起作用了。有什么方法可以让它从一开始就工作吗?

    将这一行添加到您的
    项目中。clj

    (ns javafoo.core)
    (deftype PPoint [x y])
    
    :prep-tasks [["compile" "javafoo.core"] "javac"]