Clojure ソースでlein
作成されたクラスを Java ソースから使用したいと考えています。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])
に入れる
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
- コンパイル
それは最終的に動作します。最初からうまくいく方法はありますか?