как разместить мой проект hiccup clojure на tomcat?

У меня есть проект 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)

это ошибка, которая приходит.


person N.Singh    schedule 03.09.2018    source источник
comment
Вы действительно должны предоставить код (или шаблон), который вы использовали, как вы развернули его на tomcat, а также ошибки и журналы, которые вы получили. SO предназначен для решения конкретных задач программирования.   -  person cfrick    schedule 03.09.2018


Ответы (1)


Один намек - это исключение, которое вы получили:

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 новые строки за раз, пока он не заработает.

person Alan Thompson    schedule 03.09.2018
comment
спасибо за предложение попробую реализовать. - person N.Singh; 04.09.2018