Мой профессор позволил мне практиковать и Clojure, и Java!Я определенно использую эту возможность и хочу, чтобы мое первое назначение на Java вызвало некоторый код Clojure.Прежде чем перейти к фактическому заданию, я хочу создать простой, рабочий пример.Мне нужна ваша помощь.
Я прочитал несколько ссылок на совместимость Java / Clojure. Это и Это .
Я буду использовать первую ссылку для демонстрации того, что я сделал до сих пор:
1) Я создалClojure Project, сбросил файл .cli с сайта и использует функцию экспорта в Eclipse, чтобы экспортировать его как .jar в папку в моем каталоге Documents.
2) Я создал второй проект Java, сбросил в него файл java и добавил clojure.jar в качестве библиотеки, на которую есть ссылки.
Закрытие ns:
(ns com.tiny
(:gen-class
:name com.tiny
:methods [#^{:static true} [binomial [int int] double]]))
Импорт Java:
import com.tiny;
Файл Java не распознает com.tiny
.Я не знаю почему.На сайтах упоминается что-то о пути к классам.Итак, я нашел редактор пути к классам в eclipse и добавил нужную папку с .jar в список путей.Это также не сработало.
Я не знаю, что я делаю не так.Я сослался на jar-файл, добавил его в путь к классам и выполнил полное копирование-вставку кода в первой ссылке (кроме имени пакета).
Java-код:
import com.tiny;
public class Main {
public static void main(String[] args) {
System.out.println("(binomial 5 3): " + tiny.binomial(5, 3));
System.out.println("(binomial 10042, 111): " + tiny.binomial(10042, 111));
}
}
Код закрытия:
(ns com.tiny
(:gen-class
:name com.tiny
:methods [#^{:static true} [binomial [int int] double]]))
(defn binomial
"Calculate the binomial coefficient."
[n k]
(let [a (inc n)]
(loop [b 1
c 1]
(if (> b k)
c
(recur (inc b) (* (/ (- a b) b) c))))))
(defn -binomial
"A Java-callable wrapper around the 'binomial' function."
[n k]
(binomial n k))
(defn -main []
(println (str "(binomial 5 3): " (binomial 5 3)))
(println (str "(binomial 10042 111): " (binomial 10042 111)))
)