tomcat - 如何在 tomcat 上托管我的 hiccup clojure 项目?

标签 tomcat clojure hiccup

我有一个 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/

相关文章:

java - 从Tomcat 6 JDK 1.6迁移到Tomcat 7 JDK 1.7 session 问题

java - 部署和运行 war 文件

java - 意外的 Servlet 缓存

clojure - 在 REPL 中实现 Clojure 惰性序列(字符串)

recursion - 学习递归读写

javascript - 如何在 clojure Hiccup 中嵌入 javascript?

tcp 断开连接时的 Http session 持久性

java - 如何跳转到clojure.lang java源码?

clojure - 如何在 Clojure 中访问表单的各个字段?

clojure - 如何将带样式的 HTML 标签转换为 Hiccup? react 问题