在我的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应该包含在我的类路径中,当项目运行时,但似乎并非如此。
答案 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
。