Использование пользовательских классов Java в Clojure REPL - PullRequest
3 голосов
/ 06 декабря 2011

В Eclipse, используя плагин CCW, я хочу загрузить файл clojure в REPL.Проблема в том, что у меня есть оператор import для одного из моих собственных классов Java, но, очевидно, его нет в моем classpath.

(ns my-clj-ns
  (:import [alg.gen Enumerator]))

Нужно ли делать jar-файлы из каждого класса, который я хочу использовать /test in Clojure REPL?

В настоящее время попытка загрузить мой clj в REPL приводит к ошибке: «Загрузка файла в Clojure REPL» не завершилась нормально.Пожалуйста, смотрите журнал для получения дополнительной информации.java.lang.NullPointerException

Любая помощь будет принята с благодарностью.

Ответы [ 4 ]

1 голос
/ 07 декабря 2011

Когда вы находитесь в реплее ccw, вы можете нажать alt-e, чтобы увидеть трассировку стека. Если вы получаете NullPointerException, я не думаю, что это проблема с classpath.

1 голос
/ 06 декабря 2011

Вы можете позволить leiningen скомпилировать их, используя,

:javac-options {:destdir "classes/"}
:java-source-path "src/main/java" ; location of Java source

или скомпилируйте их вручную и переместите файлы классов в каталог classes /. Не нужно создавать банку.

0 голосов
/ 18 декабря 2017

Есть действительно хорошее руководство, если вы хотите узнать, как это сделать.

https://github.com/technomancy/leiningen/blob/master/doc/MIXED_PROJECTS.md

Но в сущности приведите определение проекта, например, следующее для исходного кода Java.

(defproject megacorp/superservice "1.0.0-SNAPSHOT"
  :description "A Clojure project with a little bit of Java sprinkled here and there"
  :source-paths      ["src/clojure"]
  :java-source-paths ["src/java"])
0 голосов
/ 07 декабря 2011

Ваш код выглядит нормально для меня.

Я подозреваю, что проблема связана с вашим Eclipse Java Build Path , который определяет, что Eclipse включает в classpath для вашего приложения.

В частности, если ваш класс Java находится в отдельном проекте, вам нужно будет либо добавить этот проект в путь сборки (щелкните правой кнопкой мыши по проекту / Свойства / Путь сборки Java / Проекты), либо упаковать его как jar.

Когда вы начнете предъявлять более сложные требования к сборке, вы также можете захотеть взглянуть на Maven , чтобы справиться с подобными вещами для вас.Maven - это боль в обучении / настройке в первую очередь, но это окупается в долгосрочной перспективе.

Leiningen также является отличным инструментом для использования, но я лично не использую его по следующим причинам:

  1. Это прекрасно в командной строке,но не так хорошо интегрируется с рабочим процессом Eclipse
  2. Maven более широко используется и лучше поддерживается в мире Java
...