Подтвердить что ты не робот

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]

Что мне не хватает?

4b9b3361

Ответ 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/"]
    ...
)