clojure/lein:如何在我的项目中包含java文件?

2022-09-02 03:00:08

我有一个带有单个类的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"])

然后,您可以在代码中的这些源位置或 REPL 导入 Java 类,就像您已经尝试的那样。


答案 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"]
  ...)