我应该在哪个目录下运行java-jar my-webapp-0.1.0-standalone.jar?
里面说 现在为你的webapp创建一个uberjar(我应该在哪个目录下运行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
通过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服务器的连接。