【问题标题】:Weird lein uberwar behavior奇怪的 lein uberwar 行为
【发布时间】:2011-09-09 05:53:59
【问题描述】:

我正在为我的测试 web 应用程序执行 lein uberwar,我收到以下奇怪的错误:

Exception in thread "main" java.lang.ClassCastException: java.lang.Boolean cannot be cast to clojure.lang.Symbol (servlet.clj:1)

servlet.clj 包含以下内容:

(ns test.servlet
  (:use ring.util.servlet)
  (:require test.routes :as routes)
  (:gen-class :extends javax.servlet.http.HttpServlet))

(defservice routes/app-routes)

test.routes 文件包含:

(ns test.routes
  (:use compojure.core)
  (:require [compojure.route :as route]
            [compojure.handler :as handler]))


(defroutes app-routes
  (GET "/" [] {:status 200
               :headers {"Content-Type" "text/html"}
               :body "<h1>Hello World</h1>"})
  (route/files "/" {:root "static"})
  (ANY "/:s" [s] (str "page-not-found" s)

;; For lein ring-server
;(def test-handler
;  (handler/site app-routes))

奇怪的是,如果我换行

(:require test.routes :as routes)

与:

(:require test.routes)

然后调用

 (defservice test.routes/app-routes)

在 servlet.clj 中,WAR 编译良好,并且在 tomcat 中完美运行。我的代码中是否有一些我看不到的错误?为什么我需要调用 test.routes/... 而不仅仅是 routes/...?

【问题讨论】:

    标签: clojure war compojure


    【解决方案1】:

    你需要把它放在一个向量中:

    (:require [test.routes :as routes])
    

    【讨论】:

    • @stk 欢迎您!如果它解决了您的问题,您介意接受这个答案吗?
    猜你喜欢
    • 1970-01-01
    • 2015-10-08
    • 1970-01-01
    • 2018-10-18
    • 2019-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多