как разместить мой проект hiccup clojure на tomcat? - PullRequest
0 голосов
/ 03 сентября 2018

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

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

1 Ответ

0 голосов
/ 03 сентября 2018

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

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

...