从Clojure调用Java类上的方法

从Clojure调用Java类上的方法,clojure,Clojure,我有一个简单的Java源代码: class HelloJava { public static String greetMe() { return "Hello, this is Java calling!"; } } 我将其编译成一个名为HelloJava.class的类文件 HelloWorld.class位于我从中启动Repl的同一目录中 现在如何在Clojure REPL中调用HelloJava.greetMe()?静态方法通过类/方法访问,并且与Cloju

我有一个简单的Java源代码:

class HelloJava {

   public static String greetMe() {
      return "Hello, this is Java calling!";
   }

}
我将其编译成一个名为HelloJava.class的类文件

HelloWorld.class位于我从中启动Repl的同一目录中


现在如何在Clojure REPL中调用HelloJava.greetMe()?

静态方法通过类/方法访问,并且与Clojure中的大多数内容一样,通过包装在参数中调用:

(import org.user3231690.HelloJava)
(HelloJava/greetMe)

好的,我明白了。如果我没有将该类放入包中,而是将其编译到启动Repl的同一个目录中,又如何呢。这不应该也在类路径上,所以(导入HelloJava)应该可以工作吗?好的,我想出来了。我在启动Repl的目录中有HelloJava.class,因此我需要执行以下操作:java-cp clojure-1.6.0.jar:。clojure.main加载带有CP中当前目录的Repl。现在我执行(导入HelloJava)并导入。然而,当我随后执行(HelloJava/greetMe)时,我得到了IllegalAccessError。我试图从类用户$eval3 user/eval3(无源文件:2)访问类HelloJava,而出现上述IllegalAccessError的原因是,原始Java代码没有将该类声明为“public”。它应该是公共类HelloJava{。。。。