Я разрабатываю простой веб-приложение hello world в Clojure. Однако после того, как я добавил библиотеку Schema в свой проект, я начал получать ошибку ниже при попытке построить uberjar с помощью lein uberjar
. Как ни странно, приложение все еще проходит модульные тесты и работает без ошибок при запуске с использованием lein dev
.Схема, вызывающая ошибку сборки uberimage
java.lang.RuntimeException: Не удается разрешить символ: недостающих-требуется ключ в этом контексте компиляции: (сервер/api.clj: 21: 17) в clojure.lang.Compiler.analyze (Compiler.java:6464) в clojure.lang.Compiler.analyze (Compiler.java:6406) в clojure.lang.Compiler $ VectorExpr.parse (Compiler.java:3126) в clojure.lang.Compiler.analyze (Compiler.java:6447) в clojure.lang.Compiler.analyze (Compiler.java:6406) в clojure.lang.Compiler $ MapExpr.parse (Compiler.java:2981) в clojure.lang.Compiler.analyze (Compiler.java:6453) в clojure.lang.C ompiler.analyze (Compiler.java:6406) в clojure.lang.Compiler $ MapExpr.parse (Compiler.java:2981) в clojure.lang.Compiler.analyze (Compiler.java:6453) в clojure.lang. Compiler.analyze (Compiler.java:6406) в clojure.lang.Compiler $ InvokeExpr.parse (Compiler.java:3719) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6646) в clojure.lang. Compiler.analyze (Compiler.java:6445) в clojure.lang.Compiler.access $ 100 (Compiler.java:38) в clojure.lang.Compiler $ LetExpr $ Parser.parse (Compiler.java:6050) в clojure .lang.Compiler.analyzeSeq (Compiler.java:6644) в clojure.lang.Compiler.analyze (Compiler.java:6445) в clojure.lang.Compiler.analyzeSeq (Compil er.java:6632) на clojure.lang.Compiler.analyze (Compiler.java:6445) на clojure.lang.Compiler.analyze (Compiler.java:6406) на clojure.lang.Compiler $ InvokeExpr.parse (Compiler.java:3719) на clojure.lang.Compiler.analyzeSeq (Compiler.java:6646) на clojure.lang.Compiler.analyze (Compiler.java:6445) на clojure.lang.Compiler.analyze (компилятор. java: 6406) at clojure.lang.Compiler $ BodyExpr $ Parser.parse (Compiler.java:5782) в clojure.lang.Compiler $ LetExpr $ Parser.parse (Compiler.java:6100) в clojure.lang. Compiler.analyzeSeq (Compiler.java:6644) в clojure.lang.Compiler.analyze (Compiler.java:6445) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6632) a t clojure.lang.Compiler.analyze (Compiler.java:6445) в clojure.lang.Compiler.analyze (Compiler.java:6406) в clojure.lang.Compiler $ BodyExpr $ Parser.parse (Compiler.java: 5782) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6644) в clojure.lang.Compiler.analyze (Compiler.java:6445) в clojure.lang.Compiler.analyze (Compiler.java:6406) at clojure.lang.Compiler $ BodyExpr $ Parser.parse (Compiler.java:5782) в clojure.lang.Compiler $ LetExpr $ Parser.parse (Compiler.java:6100) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6644) на clojure.lang.Compiler.analyze (Compiler.java:6445) на clojure.lang.Compiler.analyzeSeq (Compiler.java:6632) на clojure.lang.Compiler.analyze (Compiler.java:6445) в clojure.lang.Compiler.analyze (Compiler.java:6406) в clojure.lang.Compiler $ BodyExpr $ Parser.parse (Compiler.java:5782)) на clojure.lang.Compiler $ LetExpr $ Parser.parse (Compiler.java:6100) на clojure.lang.Compiler.analyzeSeq (Compiler.java:6644) на clojure.lang.Compiler.проанализируйте (Compiler.java:6445) по адресу clojure.lang.Compiler.analyzeSeq (Compiler.java:6632) в clojure.lang.Compiler.analyze (Compiler.java:6445) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6632) на clojure.lang.Compiler.analyze (Compiler.java:6445) на clojure.lang.Compiler.analyze (Compiler.java:6406) на clojure.lang.Compiler $ BodyExpr $ Parser. parse (Compiler.java:5782) в clojure.lang.Compiler $ LetExpr $ Parser.parse (Compiler.java:6100) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6644) в clojure.lang. Compiler.analyze (Compiler.java:6445) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6632) в clojure.lang.Compiler.analyze (Compiler.java : 6445) на clojure.lang.Compiler.analyzeSeq (Compiler.java:6632) на clojure.lang.Compiler.analyze (Compiler.java:6445) на clojure.lang.Compiler.analyze (Compiler.java:6406)) в clojure.lang.Compiler $ BodyExpr $ Parser.parse (Compiler.java:5782) в clojure.lang.Compiler $ FnMethod.parse (Compiler.java:5217) в clojure.lang.Compiler $ FnExpr.parse (Compiler.java:3846) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6642) в clojure.lang.Compiler.analyze (Compiler.java:6445) в clojure.lang.Compiler.analyzeSeq (компилятор .java: 6632) на clojure.lang.Compiler.analyze (Compiler.java:6445) на clojure.lang.Compiler.analyze (Compiler.java:6406) на clojure.lang.Compiler $ InvokeExpr.parse (Compiler.java:3719) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6646) в clojure.lang.Compiler.analyze (Compiler.java:6445) at clojure.lang.Compiler.analyzeSeq (Compiler.java:6632) при clojure.lang.Compiler.analyze (Compiler.java:6445) при clojure.lang.Compiler.analyzeSeq (Compiler.java:6632) в Clojure .lang.Compiler.analyze (Compiler.java:6445) в clojure.lang.Compiler.analyze (Compiler.java:6406) в clojure.lang.Compiler $ InvokeExpr.parse (Compiler.java:3719) в clojure .lang.Compiler.analyzeSeq (Compiler.java:6646) в clojure.lang.Compiler.analyze (Compiler.java:6445) в clojure.lang .Compiler.analyzeSeq (Compiler.java:6632) в clojure.lang.Compiler.analyze (Compiler.java:6445) в clojure.lang.Compiler.analyze (Compiler.java:6406) в clojure.lang.Compiler $ InvokeExpr.parse (Compiler.java:3719) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6646) в clojure.lang.Compiler.analyze (Compiler.java:6445) в clojure.lang.Compiler .analyze (Compiler.java:6406) в clojure.lang.Compiler $ InvokeExpr.parse (Compiler.java:3719) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6646) в clojure.lang.Compiler .analyze (Compiler.java:6445) в clojure.lang.Compiler.analyze (Compiler.java:6406) в clojure.lang.Compiler $ InvokeExpr.parse (Compi ler.java:3719) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6646) в clojure.lang.Compiler.analyze (Compiler.java:6445) в clojure.lang.Compiler.analyzeSeq (компилятор. java: 6632) в clojure.lang.Compiler.analyze (Compiler.java:6445) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6632) в clojure.lang.Compiler.analyze (Compiler.java: 6445) в clojure.lang.Compiler.analyze (Compiler.java:6406) в clojure.lang.Compiler $ InvokeExpr.parse (Compiler.java:3719) в clojure.lang.Compiler.analyzeSeq (Compiler.java: 6646) в clojure.lang.Compiler.analyze (Compiler.java:6445) в clojure.lang.Compiler.analyze (компилятор.java: 6406) в clojure.lang.Compiler $ InvokeExpr.parse (Compiler.java:3719) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6646) в clojure.lang.Compiler.analyze (компилятор. java: 6445) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6632) в clojure.lang.Compiler.analyze (Compiler.java:6445) в clojure.lang.Compiler.analyze (Compiler.java: 6406) в clojure.lang.Compiler $ InvokeExpr.parse (Compiler.java:3719) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6646) в clojure.lang.Compiler.analyze (Compiler.java: 6445) на clojure.lang.Compiler.analyzeSeq (Compiler.java:6632) на clojure.lang.Compiler.analyze (Compiler.java:6445) на clojure.lang.Compiler.analyze (Compiler.java:6406) в clojure.lang.Compiler $ BodyExpr $ Parser.parse (Compiler.java:5782) в clojure.lang.Compiler $ FnMethod.parse (Compiler.java : 5217) на clojure.lang.Compiler $ FnExpr.parse (Compiler.java:3846) на clojure.lang.Compiler.analyzeSeq (Compiler.java:6642) на clojure.lang.Compiler.analyze (Compiler.java : 6445) на clojure.lang.Compiler.analyzeSeq (Compiler.java:6632) на clojure.lang.Compiler.analyze (Compiler.java:6445) на clojure.lang.Compiler.access $ 100 (Compiler.java: 38) в clojure.lang.Compiler $ DefExpr $ Parser.parse (Compiler.java:538) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6644) по адресу clojure.lang.Compiler.analyze (Compiler.java:6445) на clojure.lang.Compiler.analyze (Compiler.java:6406) на clojure.lang.Compiler.compile1 (Compiler.java:7221) на clojure .lang.Compiler.compile (Compiler.java:7292) на clojure.lang.RT.compile (RT.java:398) на clojure.lang.RT.load (RT.java:438) на clojure.lang .RT.load (RT.java:411) на clojure.core $ load $ fn__5066.invoke (core.clj: 5641) на clojure.core $ load.doInvoke (core.clj: 5640) на clojure.lang .RestFn.invoke (RestFn.java:408) в clojure.core $ load_one.invoke (core.clj: 5446) на clojure.core $ compile $ fn__5071.invoke (core.clj: 5652) на clojure.core $ compile.invoke (ядро. clj: 5651) at пользователь $ eval9 $ fn__16.invoke (form-init1857067608391167398.clj: 1) at пользователь $ eval9.invoke (form-init1857067608391167398.clj: 1) at clojure.lang.Compiler.eval (компилятор. java: 6703) на clojure.lang.Compiler.eval (Compiler.java:6693) на clojure.lang.Compiler.load (Compiler.java:7130) на clojure.lang.Compiler.loadFile (Compiler.java: 7086) в clojure.main $ load_script.invoke (main.clj: 274) at clojure.main $ init_opt.invoke (main.clj: 279) at clojure.main $ initialize.invoke (main.clj: 307) at clojure.main $ null_opt.invoke (main.clj: 342) at clojure.main $ main.doInvoke (main.clj: 420) at clojure.lang.RestFn.invoke (RestFn.java:421) на clojure.lang.Var.invoke (Var.java:383) при clojure.lang.AFn.applyToHelper (AFn.java:156) при clojure.lang.Var.applyTo (Var.java:700) в clojure.main.main (main.java:37) Вызвано: java.lang.RuntimeException: Невозможно разрешить символ: missing-required-key в этом контексте на clojure.lang.Util.runtimeException (Util.java:221) в clojure.lang.Compiler.resolveIn (Compiler.java:6940) в clojure.lang.Compiler.resolve (Compiler.java:6884) в clojure.lang.Compiler.analyzeSymbol (Compiler.java:6845) в clojure.lang.Compiler.analyze (Compiler.java:6427) ... 153 еще Исключение в теме "main" java.lang.RuntimeException: Невозможно присвоить символ разрешения: missing-required-key в этом контексте, компиляция: (server/api.clj: 21: 17) в clojure.lang.Compiler.analyze (Compiler.java:6464) в clojure .lang.Compiler.analyze (Compiler.java:6406) в clojure.lang.Compiler $ VectorExpr.parse (Compiler.java:3126) в clojure.lang.Compiler.analyze (Compiler.java:6447) в clojure .lang.Compiler.analyze (Compiler.java:6406) в clojure.lang.Compiler $ MapExpr.parse (Compiler.java:2981) в clojure.lang.Compiler.analyze (Compiler.java:6453) в clojure .lang.Compiler.analyze (Compiler.java:6406) в clojure.lang.Compiler $ MapExpr.parse (Compiler.java:2981) в clojure.lang.Compiler.analyze (Compiler.java:6453) в clojure.lang.Compiler.analyze (Compiler.java:6406) в clojure.lang.Compiler $ InvokeExpr.parse (Compiler.java:3719) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6646) при clojure.lang.Compiler.analyze (Compiler.java:6445) при clojure.lang.Compiler.access $ 100 (Compiler.java:38) в clojure.lang.Compiler $ LetExpr $ Parser.parse (Compiler.java:6050) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6644) в clojure.lang.Compiler.analyze (Compiler.java:6445) на clojure.lang.Compiler.analyzeSeq (Compiler.java:6632) на clojure.lang.Compiler.analyze (Compiler.java:6445) на clojure.lang.Compiler. проанализируйте (Compiler.java:6406) в clojure.lang.Compiler $ InvokeExpr.parse (Compiler.java:3719) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6646) в clojure.lang.Compiler. проанализируйте (Compiler.java:6445) в clojure.lang.Compiler.analyze (Compiler.java:6406) в clojure.lang.Compiler $ BodyExpr $ Parser.parse (Compiler.java:5782) в clojure.lang. Компилятор $ LetExpr $ Parser.parse (Compiler.java:6100) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6644) в clojure.lang.Compiler.analyze (Compiler.java:6445) в clojure. lang.Compiler.analyzeSeq (Compiler.java:6632) в clojure.lang.Compiler.analyze (Compiler.java:6445) в clojure.lang.Compiler.analyze (компиляция r.java:6406) в clojure.lang.Compiler $ BodyExpr $ Parser.parse (Compiler.java:5782) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6644) в clojure.lang.Compiler. проанализируйте (Compiler.java:6445) по адресу clojure.lang.Compiler.analyze (Compiler.java:6406) в clojure.lang.Compiler $ BodyExpr $ Parser.parse (Compiler.java:5782) в clojure.lang. Компилятор $ LetExpr $ Parser.parse (Compiler.java:6100) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6644) в clojure.lang.Compiler.analyze (Compiler.java:6445) в clojure. lang.Compiler.analyzeSeq (Compiler.java:6632) в clojure.lang.Compiler.analyze (Compiler.java:6445) в clojure.lang.Compiler.analyze (Compiler.java:640 6) в clojure.lang.Compiler $ BodyExpr $ Parser.parse (Compiler.java:5782) в clojure.lang.Compiler $ LetExpr $ Parser.parse (Compiler.java:6100) в clojure.lang.Compiler. analySeq (Compiler.java:6644) в clojure.lang.Compiler.analyze (Compiler.java:6445) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6632) в clojure.lang.Compiler.analyze (компилятор.ява: 6644) Compiler.java:6445) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6632) в clojure.lang.Compiler.analyze (Compiler.java:6445) в clojure.lang.Compiler.analyze (компилятор. java: 6406) at clojure.lang.Compiler $ BodyExpr $ Parser.parse (Compiler.java:5782) в clojure.lang.Compiler $ LetExpr $ Parser.parse (компилятор.java: 6100) на clojure.lang.Compiler.analyzeSeq (Compiler.java:6644) на clojure.lang.Compiler.analyze (Compiler.java:6445) на clojure.lang.Compiler.analyzeSeq (Compiler.java: 6632) в clojure.lang.Compiler.analyze (Compiler.java:6445) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6632) в clojure.lang.Compiler.analyze (Compiler.java:6445) at clojure.lang.Compiler.analyze (Compiler.java:6406) в clojure.lang.Compiler $ BodyExpr $ Parser.parse (Compiler.java:5782) в clojure.lang.Compiler $ FnMethod.parse (компилятор. java: 5217) на clojure.lang.Compiler $ FnExpr.parse (Compiler.java:3846) на clojure.lang.Compiler.analyzeSeq (Compiler.java:6642) на clojure.lang.Compiler.analyze (Compiler.java:6445) при clojure.lang.Compiler.analyzeSeq (Compiler.java:6632) при clojure.lang.Compiler.analyze (Compiler.java:6445) при Clojure .lang.Compiler.analyze (Compiler.java:6406) в clojure.lang.Compiler $ InvokeExpr.parse (Compiler.java:3719) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6646) в clojure .lang.Compiler.analyze (Compiler.java:6445) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6632) в clojure.lang.Compiler.analyze (Compiler.java:6445) в clojure.lang .Compiler.analyzeSeq (Compiler.java:6632) в clojure.lang.Compiler.analyze (Compiler.java:6445) в clojure.lang.Co mpiler.analyze (Compiler.java:6406) в clojure.lang.Compiler $ InvokeExpr.parse (Compiler.java:3719) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6646) в clojure.lang. Compiler.analyze (Compiler.java:6445) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6632) в clojure.lang.Compiler.analyze (Compiler.java:6445) в clojure.lang.Compiler. проанализируйте (Compiler.java:6406) в clojure.lang.Compiler $ InvokeExpr.parse (Compiler.java:3719) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6646) в clojure.lang.Compiler. проанализируйте (Compiler.java:6445) в clojure.lang.Compiler.analyze (Compiler.java:6406) в clojure.lang.Compiler $ InvokeExpr.parse (компилятор .java: 3719) at clojure.lang.Compiler.analyzeSeq (Compiler.java:6646) в clojure.lang.Compiler.analyze (Compiler.java:6445) в clojure.lang.Compiler.analyze (Compiler.java : 6406) в clojure.lang.Compiler $ InvokeExpr.parse (Compiler.java:3719) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6646) в clojure.lang.Compiler.analyze (Compiler.java : 6445) на clojure.lang.Compiler.analyzeSeq (Compiler.java:6632) на clojure.lang.Compiler.analyze (Compiler.java:6445) на clojure.lang.Compiler.analyzeSeq (Compiler.java:6632) в clojure.lang.Compiler.analyze (Compiler.java:6445) в clojure.lang.Compiler.analyze (Compiler.java:6406) по адресу clojure.lang.Compiler $ InvokeExpr.parse (Compiler.java:3719) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6646) в clojure.lang.Compiler.analyze (Compiler.java:6445) at clojure.lang.Compiler.analyze (Compiler.java:6406) at clojure.lang.Compiler $ InvokeExpr.parse (Compiler.java:3719) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6646) at clojure.lang.Compiler.analyze (Compiler.java:6445) при clojure.lang.Compiler.analyzeSeq (Compiler.java:6632) при clojure.lang.Compiler.analyze (Compiler.java:6445) при Clojure .lang.Compiler.analyze (Compiler.java:6406) в clojure.lang.Compiler $ InvokeExpr.parse (Compiler.java:3719) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6646) в clojure.lang.Compiler.analyze (Compiler.java:6445) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6632) в clojure.lang.Compiler. проанализируйте (Compiler.java:6445) в clojure.lang.Compiler.analyze (Compiler.java:6406) в clojure.lang.Compiler $ BodyExpr $ Parser.parse (Compiler.java:5782) в clojure.lang. Компилятор $ FnMethod.parse (Compiler.java:5217) в clojure.lang.Compiler $ FnExpr.parse (Compiler.java:3846) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6642) в clojure. lang.Compiler.analyze (Compiler.java:6445) в clojure.lang.Compiler.analyzeSeq (Compiler.java:6632) в clojure.lang.Compiler.analyze (Compil er.java:6445) at clojure.lang.Compiler.access $ 100 (Compiler.java:38) в clojure.lang.Compiler $ DefExpr $ Parser.parse (Compiler.java:538) в clojure.lang.Compiler .analyzeSeq (Compiler.java:6644) в clojure.lang.Compiler.analyze (Compiler.java:6445) в clojure.lang.Compiler.analyze (Compiler.java:6406) в clojure.lang.Compiler.compile1 (Compiler.java:7221) на clojure.lang.Compiler.compile (Compiler.java:7292) на clojure.lang.RT.compile (RT.java:398) на clojure.lang.RT.load (RT .java: 438) at clojure.lang.RT.load (RT.java:411) at clojure.core $ load $ fn__5066.invoke (core.clj: 5641) at clojure.core $ load.doInvoke (core .clj: 56 40) в clojure.lang.RestFn.invoke (RestFn.java:408) в clojure.core $ load_one.invoke (core.clj: 5446) в clojure.core $ compile $ fn__5071.invoke (core.clj: 5652) на clojure.core $ compile.invoke (core.clj: 5651) на пользователь $ eval9 $ fn__16.invoke (form-init1857067608391167398.clj: 1) на пользователь $ eval9.invoke (form-init1857067608391167398.clj: 1) в clojure.lang.Compiler.eval (Compiler.java:6703) в clojure.lang.Compiler.eval (Compiler.java:6693) в clojure.lang.Compiler.load (Compiler.java:7130) at clojure.lang.Compiler.loadFile (Compiler.java:7086) at clojure.main $ load_script.invoke (main.clj: 274) at clojure.main $ init_opt.invoke (main.clj : 279) at clojure.main $ initialize.invoke (main.clj: 307) at clojure.main $ null_opt.invoke (main.clj: 342) at clojure.main $ main.doInvoke (main.clj: 420) в clojure.lang.RestFn.invoke (RestFn.java:421) в clojure.lang.Var.invoke (Var.java:383) в clojure.lang.AFn.applyToHelper (AFn.java:156) at clojure.lang.Var.applyTo (Var.java:700) at clojure.main.main (main.java:37) Причиняется: java.lang.RuntimeException: Невозможно разрешить символ: missing-required-key in этот контекст на clojure.lang.Util.runtimeException (Util.java:221) на clojure.lang.Compiler.resolveIn (Compiler.java:6940) на clojure.lang.Compiler.resolve (Compiler.java: 6884) в clojure.lang.Compiler.analyzeSymbol (Compiler.java:6845) в clojure.lang.Compiler.analyze (Compiler.java:6427) ... 153 более Компиляция не удалось: неуспешна
Ниже приведен исходный файл, в котором я использую схему. Для краткости я опустил остальные исходные файлы, но если кто-то хочет увидеть остальное, просто спросите.
(ns server.api
(:require [aleph.http :as http]
[compojure.api.sweet :refer :all]
[compojure.route :as route]
[com.stuartsierra.component :as component]
[ring.middleware.reload :refer [wrap-reload]]
[ring.util.http-response :refer :all]
[schema.core :as s]
[server.logging :refer [wrap-exception-logging wrap-request-logging] :as log]))
(s/defschema Greeting
{:hello s/Str
s/Keyword s/Any})
(defn app [db]
(api
{:format {:formats [:json-kw]}}
(middlewares [wrap-request-logging
wrap-exception-logging]
(swagger-ui "/docs" :swagger-docs "/endpoints")
(swagger-docs "/endpoints"
{:info {:title "Hello World Api"}})
(GET* "/greet" []
:summary "Greets someone by name."
:description "Greets a person by name, telling them about
the database configuration we're using as well."
:return Greeting
:query-params [name :- s/Str]
(ok {:hello name :with-db db}))
(route/not-found (not-found {:error "Page not found."})))))
(defrecord Api
[port env db logger]
component/Lifecycle
(start [{:keys [connection] :as component}]
(if connection
component
(do (log/info "Starting Api at port" port "with env" env)
(let [application (app db)
handler (if (= env :dev) (wrap-reload application) application)
conn (http/start-server handler {:port port :join? false})]
(assoc component :connection conn)))))
(stop [{:keys [connection] :as component}]
(if-not connection
component
(do (log/info "Stopping Api")
(.close connection)
(assoc component :connection nil)))))
(defn new-api [port env]
(->Api port env nil nil))
, я уже пытался отключить AOT компиляции, так что, как представляется, основное различие между обычной компиляции и построения uberjar, но без костей.Я также искал ключ «отсутствующего ключа» в исходном коде Схемы и убедился, что он указан правильно, это определенно кажется, поскольку, если я его смену, тесты Schema начнут сбой.
В чем отличие процесса компиляции при создании uberjar по сравнению с компиляцией в обычном режиме? Есть ли что-нибудь еще, что я могу попробовать?
Спасибо за отзыв! Удаление линии 21/22 действительно решило проблему. Теперь мне нужно выяснить, почему чванство терпит неудачу ... Что заставило вас подозревать, что это проблема? – CalumMcCall
@CalumMcCall номер строки в сообщении об ошибке. –