我有一个Clojure/Lein项目,我成功地使用了一个Java类,通过通常的Java互操作范式在我的Clojure代码中创建(./src/com/mypackage/MyClass.java
年(。但是现在我想增强MyClass,所以在MyClass中,我想通过project.clj
依赖项列表导入我通过Maven安装的Java包,但是import javax.mail.Message
等给出错误:"无法解析导入javax.mail"。诚然,我对Java和JVM非常感兴趣。我怎样才能让MyClass通过project.clj
依赖项列表了解我通过Maven安装的东西。
(我已经成功地使用了通过 Maven 通过 Clojure 代码中的project.clj
依赖项列表安装的 Java 包。
这是我从project.clj
依赖项:
:dependencies [[org.clojure/clojure "1.10.0"]
[clj-http "2.0.0"]
[cheshire "5.9.0"]
[org.jsoup/jsoup "1.8.3"]
[javax.mail/javax.mail-api "1.6.0"]
[com.amazonaws/aws-java-sdk "1.11.714"]]
请使用project.clj
文件的内容更新您的问题。
作为猜测,您的依赖项格式可能不正确。它应如下所示:
[javax.mail/javax.mail-api "1.6.0"]
您可以在Maven Central查看详细信息。 我应该如何找到正确的坐标? 只需谷歌单词
maven central javax.mail.Message
它会带您到正确的Maven中心页面。
更新:
下面是一个有效的 java 示例文件:
package demo;
import javax.mail.Message;
public class Calc {
public static Message msg;
public static void show() {
System.out.println( msg );
}
}
以及project.clj
中的:dependencies
(请注意后缀 CLJ,而不是 CLI(:
:dependencies [
[org.clojure/clojure "1.10.1"]
[prismatic/schema "1.1.12"]
[tupelo "0.9.173"]
[javax.mail/mail "1.4"]
;[javax.mail/javax.mail-api "1.6.0"] ; also works
]
和结果:
~/expr/demo > lein clean; lein test
Compiling 2 source files to /home/alan/expr/demo/target/default+test+test/class-files
lein test _bootstrap
-------------------------------
Clojure 1.10.1 Java 13
-------------------------------
lein test tst.demo.core
Calling Calc/show
null
Ran 2 tests containing 0 assertions.
0 failures, 0 errors.