5

Clojure ソースでlein作成されたクラスを Java ソースから使用したいと考えています。deftypeこれは基本的なチュートリアルではカバーされておらず、正しく動作させることができません。

問題は、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. コンパイル

それは最終的に動作します。最初からうまくいく方法はありますか?

4

1 に答える 1

7

次の行を に追加しますproject.clj

:prep-tasks [["compile" "javafoo.core"] "javac"]
于 2013-10-03T14:07:38.897 に答える