Po prostu uczę się jak lein
i chciałbym użyć ze źródła Java klasy utworzonej przez deftype
w źródle Clojure. Nie zostało to omówione w podstawowym samouczku i nie mogę go uruchomić poprawnie.Kolejność kompilacji Leiningen?
Problem polega na tym, że źródło Javy nie może importować klasy Clojure, ponieważ nie została jeszcze skompilowana . Klasa Clojure nie jest skompilowana, ponieważ kompilacja została przerwana przez źródło Javy .
daję minimalny przykład:
utworzyć nowy projekt z:
lein new app javafoo
Dodaj do
project.clj
:aot :all :java-source-paths ["src/java"]
oddany do
src/javafoo/core.clj
:(ns javafoo.core) (deftype PPoint [x y])
Wstawić do
src/java/JavaFoo.java
:package foo.java; import javafoo.core.PPoint; public class JavaFoo { public static void main(String[] args) { System.out.println("JavaFoo"); } }
spróbować skompilować
lein compile
nie jest on z package javafoo.core doesn't exist
. Więc teraz muszę
- Wykomentuj
:java-source-paths
- kompilacji
- Odkomentuj
:java-source-paths
- kompilacji
To w końcu działa. Czy jest jakiś sposób, żeby to działało od samego początku?