My Leiningen项目需要一些我试图从Clojure访问的外部Java类。在Leiningen项目中使用Java代码
起初,我试图把类文件中MY_PROJECT /资源/,因为该目录是在其上运行
lein classpath
但是证实classpath中,我无法访问即使从简单的玩具的Java类Clojure驻留在所述目录中。为了让事情尽可能简单,我的玩具类没有包装声明。我的第二种方法是在我的project.clj中添加一个:java-source-path键,但我又一次被失败所触发(与上面相同的行为,我无法从Clojure REPL访问该类)。
我在哪里错了?
.class和.java文件都位于resources /和java sources目录中(java /在我的情况下)。无论如何,因为资源/ *实际上在类路径中,所以我期望Java类可以很容易地从Clojure中获得(我的Java类没有任何包声明,因此我希望它们在不导入任何内容的情况下可用)。 – Christian
我不会指望没有包的类只能自动遍历,但我不知道java类加载器或编译器的细节。 Clojure本身需要显式导入java.lang之外的任何内容(即使clojure.lang类不会自动导入)。如果没有更好的建议出现,我会尝试为这些类设置软件包(java文件和clojure代码中的import语句的相应目录) –
编辑的时限之外:如果您的类没有包,我想clojure代码中的普通'(import'YourClass)'应该可以工作,尽管在clojure中至少推荐使用2层包,因为我现在不记得技术原因。 –