У меня есть простой код Clojure с project.clj
имеющий:Вызывающие классы Clojure в Scala коде
:uberjar-name "piezojob.jar"
:aot :all
:main piezo-jobs.core
:dependencies [[org.clojure/clojure "1.8.0"]
[clojurewerkz/quartzite "2.0.0"]]
Мой core.clj является:
(ns piezo-jobs.core
(:require [clojurewerkz.quartzite.jobs :refer [defjob]])
(:gen-class))
(defjob SimpleJob
[ctx]
(println "Running a awesome job. piezo-jobs.core."))
(defn -main []
(println "piezo-jobs.core.-main being called."))
Я извлек .jar
в моей target
папке:
rm -rf extract && mkdir extract && tar -xvf piezojob.jar -C extract
и он показывает:
$ tree target/extract/piezo_jobs/core
target/extract/piezo_jobs/core
└── SimpleJob.class
0 directories, 1 file
В моем проекте scala я скопировал piezojob.jar
в папку lib
.
В одном из файла лестницу, я добавил:
import piezo_jobs._
sbt compile
счастлив.
Однако, если я заменить его: import piezo_jobs.core._
или import piezo_jobs.core.SimpleJob
затем компиляции с ошибкой:
r.scala:8: object core is not a member of package piezo_jobs
[error] import piezo_jobs.core._
[error] ^
[error] one error found
[error] (compile:compileIncremental) Compilation failed
Почему это не удается?
FYI, defjob
- макро.
Какую версию Scala вы используете? –