clojure / lein: как включить файл java в мой проект? - PullRequest
21 голосов
/ 22 сентября 2011

У меня есть файл Java с одним классом, и я хочу включить его в свой проект lein.Куда мне его положить и как его импортировать?(Я попытался поместить его в каталог src по пути к пакету, но он говорит мне ClassNotFound)

Таким образом, файл java имеет следующее объявление пакета:

package com.thebuzzmedia.imgscalr;

и имеет этот класс:

public class Scalr {

Я положил его в ~ / src / com / thebuzzmedia / imgscalr / Scalr.java и попытался импортировать его из реплик таким образом:

(import '(com.thebuzzmedia.imgscalr Scalr))

И я получаю это:

com.thebuzzmedia.imgscalr.Scalr
[Thrown class java.lang.ClassNotFoundException]

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

Ответы [ 3 ]

24 голосов
/ 22 сентября 2011

Где разместить исходные тексты Java, зависит от того, какую систему сборки вы используете. Если вы используете Leiningen, вы должны настроить исходные пути:

(defproject my-project "0.0.1-SNAPSHOT"
  [...]
  :java-source-paths ["src/java" "test/java"])

Затем вы можете импортировать классы Java в те исходные местоположения в вашем коде или в REPL, как вы уже пытались это сделать.

12 голосов
/ 18 мая 2013

Начиная с 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"]
  ...)
8 голосов
/ 16 сентября 2013

Поскольку у меня нет репутации, чтобы комментировать вышеприведенные ответы, у меня не осталось иного выхода, кроме как оставить свой собственный, немного отличающийся от него ответ.

Правильный синтаксис (по состоянию на Leiningen 2.1.3):

(defproject
    ...
    :java-source-paths ["src/main/java/" "foo/bar/baz/"]
    ...
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...