Импортировать локальный класс Java в Clojure

Я понимаю общую идею импорта класса Java в clojure, например:

(import 'a.random.Class)

Однако, скажем, у меня есть файл Example.java, содержащий класс «Пример», который я хотел бы использовать, как можно импортировать что-то подобное?

Извиняюсь, если на этот довольно нубский ответ уже был дан ответ, я огляделся, но ничего не нашел до публикации, и заранее спасибо всем, кто может пролить свет.


person Jony Thrive    schedule 31.12.2013    source источник


Ответы (1)


Чтобы иметь возможность использовать класс, определенный в Example.java, вы должны скомпилировать его и поместить полученный файл класса в путь к классам.

Если этот файл Java является вспомогательным в проекте Clojure, вы можете использовать Leiningen для автоматизации процесса:

(defproject foo "1.2.3-SNAPSHOT"
  ; ...
  :java-source-paths ["src/main/java"]
  )

Предполагая, что Example.java находится в подкаталоге src/main/java, Leiningen скомпилирует его и включит в путь к классам, когда вы используете его для запуска REPL или подготовки jar вашего проекта. (Есть также :javac-options для указания параметров, которые будут переданы компилятору Java в виде вектора строк.)

Если ваше исходное дерево Java более обширно и не зависит от стороны проекта, связанной с Clojure, может иметь смысл вместо этого упаковать его как отдельный проект Java. Затем сторона Clojure будет использовать проект Java в качестве зависимости.

person Michał Marczyk    schedule 31.12.2013