gpt4 book ai didi

java - 你如何从 Clojure 调用我自己的 Java 类中的静态方法?

转载 作者:行者123 更新时间:2023-11-30 08:36:09 24 4
gpt4 key购买 nike

我想在我从 Clojure 创建的 Java 类中调用静态方法。我将如何着手这样做?

到目前为止,我所尝试的只是在与我的 Clojure 源相同的文件夹中创建一个 Java 类,但是要么我得到一个 ClassNotFoundException,要么我被告知没有这样的命名空间。我还尝试以各种不同的方式导入该类,最终多次重新定义 Java 包声明,但没有进一步的结果。

我正在使用 Leiningen 来处理我的 Clojure 项目。

最佳答案

您还必须在项目的 project.clj 文件中提供有关 Java 类位置的信息。

这是一个例子。

Java 类:

public class BestClass {
public static String testThis() {
return "Hello";
}
}

这个类位于use-java\src\java,其中use-java是项目目录。

project.clj:

(defproject use-java "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.8.0"]]
:java-source-paths ["src/java/"]
:main ^:skip-aot use-java.core
:target-path "target/%s"
:profiles {:uberjar {:aot :all}})

上面文件中的重要部分是:java-source-paths ["src/java/"]

请注意,您可以更改类的位置,但必须相应地更改 :java-source-paths。

核心.clj:

(ns use-java.core
(:import BestClass))

(defn try-out-java-method []
(BestClass/testThis))

调用 try-out-java-method 给出:

use-java.core> (try-out-java-method)
"Hello"

关于java - 你如何从 Clojure 调用我自己的 Java 类中的静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37882579/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com