我应该在哪个目录下运行java-jar my-webapp-0.1.0-standalone.jar?

我应该在哪个目录下运行java-jar my-webapp-0.1.0-standalone.jar?,java,jar,clojure,leiningen,ring,Java,Jar,Clojure,Leiningen,Ring,里面说 现在为你的webapp创建一个uberjar(通过lein uberjar),复制它 (target/my-webapp-0.1.0-standalone.jar)到您喜欢的任何地方,以及 按常规方式运行: java-jar my-webapp-0.1.0-standalone.jar 8080 我从它自己的目录~/myapp/target/运行它,但我得到一个错误: 目标$java-jar my-webapp-0.1.0-standalone.jar my-webapp-0.1.0-s

里面说

现在为你的webapp创建一个uberjar(
通过lein uberjar
),复制它 (
target/my-webapp-0.1.0-standalone.jar
)到您喜欢的任何地方,以及 按常规方式运行:

java-jar my-webapp-0.1.0-standalone.jar 8080

我从它自己的目录
~/myapp/target/
运行它,但我得到一个错误:

目标$java-jar my-webapp-0.1.0-standalone.jar

my-webapp-0.1.0-standalone.jar中没有主清单属性

-main
函数已在handler.clj中:

(ns my-webapp.handler
  (:require [my-webapp.views :as views]
            [compojure.core :as cc]
            [compojure.handler :as handler]
            [compojure.route :as route]
            [ring.adapter.jetty :as jetty]
            (:gen-class)))

(cc/defroutes app-routes
  (cc/GET "/"
       []
       (views/home-page))
  (cc/GET "/add-location"
       []
       (views/add-location-page))
  (cc/POST "/add-location"
        {params :params}
        (views/add-location-results-page params))
  (cc/GET "/location/:loc-id"
       [loc-id]
       (views/location-page loc-id))
  (cc/GET "/all-locations"
       []
       (views/all-locations-page))
  (route/resources "/")
  (route/not-found "Not Found"))

(def app
  (handler/site app-routes))

(defn -main
  [& [port]]
  (let [port (Integer. (or port
                           (System/getenv "PORT")
                           5000))]
    (jetty/run-jetty #'app {:port  port
                            :join? false})))
我做错了什么



编辑

我正在添加我的
项目。clj

(defproject my-webapp "0.1.0"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :dependencies [[org.clojure/clojure "1.5.1"]
                 [hiccup "1.0.2"]
                 [org.clojure/java.jdbc "0.2.3"]
                 [com.h2database/h2 "1.3.170"]
                 [compojure "1.1.6"]
                 [ring/ring-jetty-adapter "1.2.1"]]
  :main my-webapp.handler
  :plugins [[lein-ring "0.8.8"]]
  :ring {:handler my-webapp.handler/app}
  :profiles
  {:dev {:dependencies [[javax.servlet/servlet-api "2.5"]
                        [ring-mock "0.1.5"]
                        [org.clojure/java.jdbc "0.0.4"] ]}})
handler.clj

    (ns my-webapp.handler
  (:require [my-webapp.views :as views]
            [compojure.core :as cc]
            [compojure.handler :as handler]
            [compojure.route :as route]
            [ring.adapter.jetty :as jetty])
  (:gen-class))

(cc/defroutes app-routes
  (cc/GET "/"
       []
       (views/home-page))
  (cc/GET "/add-location"
       []
       (views/add-location-page))
  (cc/POST "/add-location"
        {params :params}
        (views/add-location-results-page params))
  (cc/GET "/location/:loc-id"
       [loc-id]
       (views/location-page loc-id))
  (cc/GET "/all-locations"
       []
       (views/all-locations-page))
  (route/resources "/")
  (route/not-found "Not Found"))

(def app
  (handler/site app-routes))

(defn -main
  [& [port]]
  (let [port (Integer. (or port
                           (System/getenv "PORT")
                           5000))]
    (jetty/run-jetty #'app {:port  port
                            :join? false})))

这一步是你做的吗

  • 并添加:main my-webapp.handler

如果这样做没有帮助,那么您可以发布整个project.clj文件,以便我们查找其他问题吗?

您是对的,我错过了那一行,
:main my webapp.handler
。但是在添加它之后,我得到了以下错误:
$java-jar my-webapp.jar错误:无法找到或加载主类my_webapp.handler
。我将
my-webapp-0.1.0-standalone.jar
复制到
~/my-webapp/my-webapp.jar
并从
~/my-webapp
运行
java-jar-my-webapp.jar
。谢谢你的帮助。好的,我想现在可以用了。我更改了
(:gen class)
的位置,但我没有意识到我必须再次运行
leinuberjar
。对的我将对页面布局进行另一次更改,然后重试。您也可以帮助我进行部署吗?我已经问了几个问题,但我仍然不明白如何部署nginx和ring。如何在不创建war和不使用jetty的情况下将nginx添加到此设置中?可能吗?我应该使用immutant吗?在实践中,将war文件部署到应用程序服务器(如tomcat或immutant)或运行启动自己的Web服务器的jar是正常的选择。通常,Nginx在这些服务器之前运行,以代理到jar之外的jetty服务器的连接。