О интеграции Clojure в среду Springboot - PullRequest
0 голосов
/ 21 апреля 2019

В настоящее время я пытаюсь интегрировать clojure в проект gradle springboot, хотя он работает, мне нужно использовать RT.loadClassForName("au.edu.uq.core");, прежде чем Clojure.var сможет получить доступ к функции, если я прокомментирую RT.loadClassForName("au.edu.uq.core");, будетошибка вроде:

Исключение в потоке "main" java.lang.IllegalStateException: Попытка вызова несвязанного fn: # 'au.edu.uq.core / hello-from-clojure.

Но в build.gradle я уже включаю classes.dependsOn compileClojure.

Есть скриншоты build.gradle, Main Java Class и пространства имен clojure.Это крошечный демонстрационный проект для меня, чтобы изучить gradle, какие-либо предложения, чтобы сделать этот процесс сборки более элегантным?

Стартовый скрипт ./gradlew bootRun и ./gradlew run

// Это JavaОсновной класс enter image description here

// Это пространство имен clojure enter image description here

// Это build.gradle enter image description here

1 Ответ

1 голос
/ 22 апреля 2019

Из того, что я получил из скриншота класса Main, похоже, что вы используете Clojure.lang.RT для загрузки своей функции, тогда как официальная справочная документация предлагает иное:

Функции в clojure.core загружаются автоматически. Другие пространства имен можно загрузить через require:

IFn require = Clojure.var("clojure.core", "require");
require.invoke(Clojure.read("clojure.set"));

Мое предложение было бы попробовать что-то вроде:

IFn require = Clojure.var("clojure.core", "require");
require.invoke(Clojure.read("au.edu.uq.core"));
IFn helloFunction = Clojure.var("au.edu.uq.core", "hello-from-clojure");
helloFunction.invoke();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...