我正在Clojure中开发一个简单的hello world web应用程序。但是,在我将模式库添加到我的项目之后,当我试图使用lein uberjar
构建一个uberjar时,我开始出现以下错误。奇怪的是,在使用lein dev
启动时,应用程序仍然通过单元测试,并且运行时没有错误。
下面是我使用schema的源文件。为了简洁起见,我省略了其余的源文件,但如果有人想查看其余的文件,请直接询问。
(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之间的主要区别,但不是骰子。我还在模式源代码中查找了'missing-required-key'键,并确保正确引用了它,这似乎是正确的,因为如果我更改它,模式的测试就会开始失败。
与正常编译相比,创建uberjar时的编译过程还有什么不同?还有什么我可以试试的吗?
根本原因是swagger-docs
-route的输入无效(未给出:version
,请参见https://github.com/metosin/ring-swagger/blob/master/src/ring/swagger/swagger2_schema.clj#l13)。当它被添加时,它就会像预期的那样工作。
不过,给定的异常确实很糟糕,现在在最新的快照中得到了修复--对于缺失的字段使用默认值,因此不对其进行编译时模式检查。
另外,建议不要对整个应用程序进行AOTing。参见https://github.com/metosin/compojure-api/issues/129
我正在按照http://spring.io/guides/gs/consource-web-service/#scratch中提供的分步说明学习如何使用Gradle和Spring-WS使用SOAP web服务。我已经创建了上面URL中指定的文件夹结构(即:c:/src/main/java/hello)并将build.gradle、weatherclient.java、weatherconfigur
我正在创建构建一个jar,其中也将包括它的依赖关系。我正在使用maven阴影插件。但是获取错误。我试图排除传递依赖项,如下所示,仍然得到错误。
我有一个java应用程序的Maven项目。我使用的软件版本如下:Maven 3.6.3,Java 1.8.0_241。 我在这个Maven项目中有一些junit测试,我正试图使用Maven“mvn”命令运行这些测试。当我在我的Maven项目上运行命令“mvn clean test”以运行单元测试时,我得到了下面提到的构建失败。 我在网上看了很多关于上面提到的问题,但是已经好几天没有解决这个问题了。
我的maven版本和信息如下: 如前所述,通过Intellij运行时没有问题。但是当我通过intellij终端或普通终端运行maven命令时,我会得到以下错误。 Maven命令示例。 我的机器上甚至没有java SDK1.5。我可以得到一些帮助在哪里我应该改变这个版本到8这样我可以使一个maven构建请?多谢了。
我已经在我的gradle文件中启用了来使用ProGuard的特性来混淆代码,结果导致一些错误。 注意:动态创建的类实例有1个类强制转换。您可能会考虑显式保留提到的类和/或它们的实现(使用'-keep')。 警告:有309个未解析的类或接口引用。您可能需要添加丢失的库JAR或更新它们的版本。如果您的代码在没有丢失类的情况下运行良好,则可以使用'-dontwarn'选项抑制警告。(http://pro
我正在运行一个React-Native应用程序,但当我试图在android目录下gradlew installDebug时,我得到了一个构建失败。以下是我使用时得到的信息: 这是该项目的回购是从我试图设置应用程序到我的genymotion模拟器,但构建从未完成。 我已经运行了react-native start命令,并设置了与couchbase lite服务器的同步。不确定这是否是相关信息。我对本