将 类 添加到 Clojure

Adding Classes to Clojure

在我的 clojure 项目中,我依赖于 javax.jms.MessageListener 库。我的项目中有这个 class 文件,位于以下目录

My-project
|java-
|    |src -
|    |    |myJavaFile.java
|    |    |jars -
|    |       |library1.jar
|    |       |library2.jar
|    |       |libarary3.jar
|    |javax -
|    |      |jms -
|    |          |MessageListener.class
|project.clj
|src -
|    |my-program1.clj
|    |my-program2.clj
|    |my-program3.clj

然后在我的 project.clj 文件中,我将 java-source-paths 设置为

:java-source-paths ["java/src" "java/src/jars/" "java/javax/jms"]

但是当我通过 lein repl 转到 运行 我的项目时,我收到编译错误

java.lang.NoClassDefFoundError: javax/jms/MessageListener

Caused by: java.lang.ClassNotFoundException: javax.jms.MessageListener

根据我的阅读,当项目 运行ning 时,messagelistener.class 和我的库 jar 应该包含在我的 class 路径中,但似乎不是案子。

据我了解,java 项目的目录结构必须与命名空间的名称相匹配。例如 package_name.classname 必须位于类路径 https://docs.oracle.com/javase/tutorial/java/package/managingfiles.html

上的文件夹 package_name 中

当然,使用 Leiningen 或 Boot,您只需将 [javax.jms/jms-api "1.1-rev-1"] 添加到 :dependencies