Вот немного более чистая версия вашего кода:
~/expr/demo > d **/*.java
-rw-rw-r-- 1 alan alan 136 May 5 13:42 src/java/demo/Bart.java
-rw-rw-r-- 1 alan alan 120 May 5 13:42 src/java/demo/Homer.java
-rw-rw-r-- 1 alan alan 62 May 5 13:37 src/java/demo/Msg.java
> more **/*.java
::::::::::::::
Msg.java
::::::::::::::
package demo;
public interface Msg {
public String msg();
}
::::::::::::::
Bart.java
::::::::::::::
package demo;
public class Bart implements Msg {
public Bart() {}
public String msg() {
return "Don't have a cow, man!";
}
}
::::::::::::::
Homer.java
::::::::::::::
package demo;
public class Homer implements Msg {
public Homer() {}
public String msg() {
return "Doh!";
}
}
Код Clojure:
(ns tst.demo.core
(:use demo.core tupelo.core tupelo.test)
(:import [demo Msg Homer Bart]))
(dotest
(let [homer (Homer.)
bart (Bart.)]
(spyx (.msg homer))
(spyx (.msg bart))))
с результатом:
-------------------------------
Clojure 1.10.1 Java 14
-------------------------------
lein test tst.demo.core
(.msg homer) => "Doh!"
(.msg bart) => "Don't have a cow, man!"
См. этот шаблон проекта и список ресурсов документации .