Использование импортированных Java библиотек в Clojure REPL - PullRequest
2 голосов
/ 05 марта 2020

Документы Twilio для Java Lib

MVN для этой библиотеки

Я пытаюсь использовать Twilio из Clojure. Довольно плохо знаком с разработчиком Clojure, поэтому я пытаюсь в целом разобраться с импортом библиотек.

Мой project.clj выглядит так:

(defproject magical-new-project "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "EPL-2.0 OR GPL-2.0-or-later WITH Classpath-exception-2.0"
            :url "https://www.eclipse.org/legal/epl-2.0/"}
  :dependencies [[org.clojure/clojure "1.10.0"]
                 [com.twilio.sdk/twilio "7.47.5"]]
  :repl-options {:init-ns magical-new-project.core})

Мне кажется, я правильно импортирую библиотеку Twilio Java, но я не уверен.

Мой core.clj выглядит так:

(ns magical-new-project.core
  (:import [com.twilio Twilio]
           ;[com.twilio.http Request Response]
           [com.twilio.rest.api.v2010.account Message]
           [com.twilio.rest.api.v2010.account Call]
           [com.twilio.type PhoneNumber]))

(defn foo
  "I don't do a whole lot."
  [x]
  (println x "Peacefully disengage, World!"))

Насколько я могу судить, это должен быть корректный импорт класса Twilio, показанного здесь.

Итак, я пытаюсь (из REPL) для инициализации объекта Twilio, который, я надеюсь, я успешно импортировал, но это не удалось.

$ lein repl
nREPL server started on port 62356 on host 127.0.0.1 - nrepl://127.0.0.1:62356
REPL-y 0.4.3, nREPL 0.6.0
Clojure 1.10.0
OpenJDK 64-Bit Server VM 12.0.1+12
    Docs: (doc function-name-here)
          (find-doc "part-of-name-here")
  Source: (source function-name-here)
 Javadoc: (javadoc java-object-or-class-here)
    Exit: Control+D or (exit) or (quit)
 Results: Stored in vars *1, *2, *3, an exception in *e

magical-new-project.core=> (Twilio. "My API or Account SID goes here" "My AUTH_TOKEN or API secret goes here")
Syntax error (IllegalArgumentException) compiling new at (form-init14687807219308370487.clj:1:1).
No matching ctor found for class com.twilio.Twilio

Насколько я могу судить, вещь No matching ctor означает, что нет функции конструктора, которая принимает аргументы, которые я привожу, но строка 39 Twilio. java file , кажется, принимает две строки, и затем, если вы посмотрите здесь , вы увидите, что я ' m посылаю правильные аргументы (ACCOUNT_SID и AUTH_TOKEN).

В настоящий момент я не уверен, правильно ли я (1) импортирую класс Twilio, (2) добавляю зависимости в проект правильно, (2) правильно, используя REPL, или (4) правильно, используя Twilio SDK. Возможно я делаю все это неправильно.

Буду очень признателен за любую помощь или совет, который вы можете себе позволить.

1 Ответ

3 голосов
/ 05 марта 2020

функция, с которой вы связаны, является не конструктором, а функцией stati c в классе. Вы вызываете функцию stati c для класса в ближайшем будущем, например (Twilio/init "foo" "bar"). Ваш синтаксис правильный, если он действительно был конструктором.

Спасибо @juraj. Я не был уверен, действительно ли это квалифицируется как ответ: -)

...