我有一个 clojure 项目,我在其中使用了 hiccup 库。我想问一下它的工作方式是否与普通的 clojure 和 jsp 项目类似?当我将它托管在 tomcat 服务器上并尝试在网络上运行它时,出现文件未找到错误。
这是我的 project.clj 文件
(defproject web-app "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.8.0"]
[clj-jgit "0.8.10"]
[org.clojure/data.json "0.2.6"]
[clj-yaml "0.4.0"]
[io.forward/yaml "1.0.9"]
[hiccup "1.0.5"]
[compojure "1.6.1"]
[ring/ring-core "1.6.3"]
[ring/ring-defaults "0.3.2"]
[ring/ring-jetty-adapter "1.6.3"]]
:plugins [[lein-ring "0.12.4"]]
:ring {:handler handler.core/-main}
:main handler.core)
这是我的处理程序命名空间
(ns handler.core
(:require [layout.core :as veiw_mapper]
[web-app.core ]
[compojure.core :refer :all]
[compojure.route :as route]
[ring.adapter.jetty :as jetty]
[ring.middleware.defaults :refer [wrap-defaults site-defaults]])
(:gen-class))
(defroutes app-routes
(GET "/" [] (veiw_mapper/index))
(POST "/" [& params] (web-app.core/update-mapper params))
;;(POST "/about" [] ())
(route/resources "//")
(route/not-found "Not Found"))
(def app
(wrap-defaults app-routes site-defaults))
(defn -main[]
)
我正在制作 war 文件并将其粘贴到 webapps 文件夹中,然后运行 tomcat 服务器。
Type Exception Report
Message No matching ctor found for class java.lang.Integer
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
java.lang.IllegalArgumentException: No matching ctor found for class java.lang.Integer
clojure.lang.Reflector.invokeConstructor(Reflector.java:183)
handler.core$_main.invokeStatic(core.clj:21)
handler.core$_main.doInvoke(core.clj:19)
clojure.lang.RestFn.invoke(RestFn.java:408)
clojure.lang.Var.invoke(Var.java:379)
handler.listener$_contextInitialized$fn__11.invoke(listener.clj:1)
ring.util.servlet$make_service_method$fn__3668.invoke(servlet.clj:129)
handler.servlet$_service.invokeStatic(servlet.clj:1)
handler.servlet$_service.invoke(servlet.clj:1)
handler.servlet.service(Unknown Source)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
这是出现的错误。
最佳答案
一个提示是你得到的异常:
java.lang.IllegalArgumentException: No matching ctor found for class java.lang.Integer
所以它试图构造一个 Integer
但找不到正确的构造函数 (ctor)。这可能意味着在它期望整数的地方提供了一个垃圾值。例如:
> (Integer. {}) ; can't construct an Integer from an empty map
IllegalArgumentException No matching ctor found for class java.lang.Integer clojure.lang.Reflector.invokeConstructor (Reflector.java:183)
另一个提示是拼写错误的view
:
(GET "/" [] (veiw_mapper/index))
最好的方法是找到一个工作示例,让它在你的机器上工作,然后一次只添加 1-3 行新行,直到你让它工作。
关于tomcat - 如何在 tomcat 上托管我的 hiccup clojure 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52143138/