Java 向Clojure添加类
在我的clojure项目中,我依赖javax.jms.MessageListener库。我在项目中的以下目录中有这个类文件Java 向Clojure添加类,java,clojure,interop,Java,Clojure,Interop,在我的clojure项目中,我依赖javax.jms.MessageListener库。我在项目中的以下目录中有这个类文件 My-project |java- | |src - | | |myJavaFile.java | | |jars - | | |library1.jar | | |library2.jar | | |libarary3.jar | |javax - | | |jms
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源路径设置为
:java-source-paths ["java/src" "java/src/jars/" "java/javax/jms"]
但当我通过leinrepl运行我的项目时,我会发现编译错误
java.lang.NoClassDefFoundError:javax/jms/MessageListener
原因:java.lang.ClassNotFoundException:javax.jms.MessageListener
从我读到的信息来看,当项目运行时,messagelistener.class和我的库jar应该包含在我的类路径中,但事实似乎并非如此 据我所知,java项目的目录结构必须与名称空间的名称相匹配。例如,package_name.classname必须位于类路径上的package_name文件夹中
当然,使用Leiningen或Boot,您只需将
[javax.jms/jms-api“1.1-rev-1”]
添加到:依赖项中即可 嗯,罐子显然不是来源。看看这个