Clojure/lein: Как включить java файл в мой проект?
У меня есть java файл с одним классом, и я хочу включить его в свой проект lein. Где я могу его поместить и как его импортировать? (Я попытался поместить его в каталог src по пути пакета, но он сообщает мне ClassNotFound)
Итак, у java файла есть это объявление пакета:
package com.thebuzzmedia.imgscalr;
и имеет этот класс:
public class Scalr {
Я положил его в ~/src/com/thebuzzmedia/imgscalr/Scalr.java
и попытался импортировать его из repl так:
(import '(com.thebuzzmedia.imgscalr Scalr))
И я получаю это:
com.thebuzzmedia.imgscalr.Scalr
[Thrown class java.lang.ClassNotFoundException]
Что мне не хватает?
Ответы
Ответ 1
Где разместить источники Java действительно зависит от используемой системы сборки. Если вы используете Leiningen, вам нужно настроить пути к источнику:
(defproject my-project "0.0.1-SNAPSHOT"
[...]
:java-source-paths ["src/java" "test/java"])
Затем вы можете импортировать классы Java в этих источниках в своем коде или в REPL, как вы уже пытались сделать.
Ответ 2
Начиная с Leiningen 2.X, :java-source-path
был заменен на :java-source-paths
, значение которого теперь указано как вектор, а не строка.
Пример:
(defproject my-project "0.0.1-SNAPSHOT"
[...]
:java-source-paths ["src/main/java" "src/main/test"]
...)
Ответ 3
Поскольку у меня нет репутации, чтобы прокомментировать приведенные выше ответы, я остался без обращения, но оставил свой собственный, когда-либо немного другой ответ.
Правильный синтаксис (как из Leiningen 2.1.3):
(defproject
...
:java-source-paths ["src/main/java/" "foo/bar/baz/"]
...
)