В файле Java как импортировать пакеты Java, установленные через Maven, из списка зависимостей Clojure project.clj? - PullRequest
0 голосов
/ 29 января 2020

У меня есть проект Clojure / Lein, и я успешно использую класс Java, который я создал (в ./src/com/mypackage/MyClass.java) в своем коде Clojure с помощью обычной парадигмы взаимодействия Java. Но теперь я хочу улучшить MyClass, поэтому в MyClass я хочу импортировать пакет Java, который я установил через Maven через список зависимостей project.clj, но import javax.mail.Message и тому подобное выдают ошибку: «Импорт javax.mail не может быть решенным ". По общему признанию я очень зеленый в Java и JVM. Как я могу узнать MyClass о том, что я установил через Maven через список зависимостей project.clj.

(я уже успешно использую пакеты Java, которые я установил через Maven через список зависимостей project.clj в моем Код Clojure.)

Вот мои зависимости от 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"]]

1 Ответ

1 голос
/ 29 января 2020

Пожалуйста, обновите ваш вопрос содержимым вашего project.clj файла.

Возможно, у вас неправильный формат для зависимостей. Он должен выглядеть следующим образом:

[javax.mail/javax.mail-api "1.6.0"]

Подробную информацию можно получить в Maven Central . Как мне найти правильные координаты? Просто введите в Google слова

maven  central  javax.mail.Message

, и вы попадете на правильную страницу Maven Central.


Обновление:

Вот java пример файла, который работает:

package demo;
import javax.mail.Message;
public class Calc {
  public static Message msg;

  public static void show() {
    System.out.println( msg );
  }
}

и :dependencies от project.clj (обратите внимание на суффикс 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.
...