将类添加到Clojure

时间:2015-10-19 15:19:49

标签: java clojure interop

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

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

     

引起:java.lang.ClassNotFoundException:javax.jms.MessageListener

从我读过的messagelistener.class和我的库jar应该包含在我的类路径中,当项目运行时,但似乎并非如此。

1 个答案:

答案 0 :(得分:1)

据我了解,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