【发布时间】:2016-06-05 07:58:08
【问题描述】:
我有一个简单的 clojure 代码,project.clj 有:
: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."))
我在target 文件夹中提取了.jar:
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 文件夹中。
在一个 scala 文件中,我添加了:
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
为什么会失败?
仅供参考,defjob 是一个宏。
【问题讨论】:
-
你使用的是什么版本的 Scala?
标签: scala clojure jvm-languages