【问题标题】:Leiningen compilation order?莱宁根编译顺序?
【发布时间】:2013-10-03 11:02:32
【问题描述】:

我只是在学习如何lein,我想从 Java 源代码中使用 由deftype 在 Clojure 源代码中创建的类。这在基本篇中没有涉及 教程,我无法让它正常工作。

问题是 Java 源代码无法导入 Clojure 类,因为它没有 还没编译。并且 Clojure 类没有被编译,因为编译被中止 由 Java 源代码提供。

我举个小例子:

  1. 创建一个新项目:

    lein new app javafoo
    
  2. 添加到project.clj

    :aot :all
    :java-source-paths ["src/java"]
    
  3. 输入src/javafoo/core.clj:

    (ns javafoo.core)
    (deftype PPoint [x y])
    
  4. 输入src/java/JavaFoo.java:

    package foo.java;
    import javafoo.core.PPoint;
    
    public class JavaFoo {
        public static void main(String[] args) {
            System.out.println("JavaFoo");
        }
    }
    
  5. 尝试编译

    lein compile
    

它以package javafoo.core doesn't exist 失败。 所以现在我必须

  1. 注释掉:java-source-paths
  2. 编译
  3. 取消注释:java-source-paths
  4. 编译

终于成功了。有没有办法让它从一开始就起作用?

【问题讨论】:

    标签: clojure leiningen


    【解决方案1】:

    将此行添加到您的project.clj

    :prep-tasks [["compile" "javafoo.core"] "javac"]
    

    【讨论】:

      猜你喜欢
      • 2012-04-08
      • 1970-01-01
      • 2011-05-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多