Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 为什么lein ring uberwar不包括主清单属性_Clojure_Web Deployment_Leiningen - Fatal编程技术网

Clojure 为什么lein ring uberwar不包括主清单属性

Clojure 为什么lein ring uberwar不包括主清单属性,clojure,web-deployment,leiningen,Clojure,Web Deployment,Leiningen,当我调用java-jar my-application.war时 使用lein ring uberware后 我在my-app.war中收到一个没有主清单属性的响应 这是我的密码: 下面的命名空间提供了所需的:gen类和-main函数: (ns nutrif.core (:require [ring.middleware.params] [ring.middleware.resource :refer [wrap-resource]] [ri

当我调用java-jar my-application.war时 使用lein ring uberware后 我在my-app.war中收到一个没有主清单属性的响应 这是我的密码:

下面的命名空间提供了所需的:gen类和-main函数:

 (ns nutrif.core
  (:require [ring.middleware.params]
            [ring.middleware.resource :refer [wrap-resource]]
            [ring.adapter.jetty]
            [clojure.java.io :as io])
  (:gen-class))



(defn handler [request]
  {:status 200
   :header {"Content-Type" "text/html"}
   :body (io/input-stream (io/resource "public/index.html"))})

(def app
  (wrap-resource handler "public"))


(defn -main
  [& [port]]
  (let [port (Integer. (or port
                           (System/getenv "PORT")
                           8080))]
    (ring.adapter.jetty/run-jetty #'app {:port  port
                                         :join? false})))
下面是my project.clj,它指向带有-main函数的名称空间。我错过了什么

(defproject nutrif "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :dependencies [[org.clojure/clojure "1.6.0"]
                 [ring "1.3.0"]
                 [ring/ring-jetty-adapter "1.3.0"]]
  :plugins [[lein-ring "0.8.11"]]
  :dev-dependencies [[ring-serve "0.1.2"]
                     [javax.servlet/servlet-api "2.5"]]
  :ring {:handler nutrif.core/app
         :resource-paths [resources public]}

  :main nutrif.core
  :aot [nutrif.core])

如果你想把它作为一个独立的应用程序运行,你需要创建一个uberjar,而不是通过ring创建一个uberwar。uberwar用于通过应用服务器进行部署。lein uberjar可以工作,因此我假设过程是在我的服务器上加载my-app.jar并使用lein trampoline调用java-jar my-app,这可能是另一种方法,然而,my-app.war方法允许我在一台服务器上运行多个应用程序,它还允许开发人员使用tomcat或jetty设置服务器环境变量,因此我仍然需要解决my-app.war没有打包我的主要功能的问题。我没有看到任何迹象表明uberwar也应该作为独立jar运行。虽然我不怀疑有可能创造一个,但我也不希望莱恩·林创造一个。蹦床是怎么回事?使用uberjar或uberwar,您甚至不应该在服务器上安装lein,您应该构建一个工件,部署它,并直接使用您选择的容器或java运行它。关于运行多个应用程序,最好使用类似nginx的东西,为每个路由/子站点配置正确的端口。设置环境变量非常简单,比正确配置servlet容器容易得多。lein trampoline将启动my-app.jar文件,而无需启动lein jvm来管理lein任务,然而,为了启动my-app.jar文件,我所做的是调用java-jar my-app.jar&在后台运行该任务,但是,这仍然不能解决.war文件问题。