奇怪的超级战争行为

发布于 2024-11-13 12:04:59 字数 1259 浏览 1 评论 0原文

我正在为我的测试 webapp 执行 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)

With:

(:require test.routes)

And call

 (defservice test.routes/app-routes)

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

I'm executing lein uberwar for my test webapp and I'm getting the following weird error:

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

The servlet.clj contains the following:

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

(defservice routes/app-routes)

The test.routes file contains:

(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))

The strange thing is that if I substitute the line

(:require test.routes :as routes)

With:

(:require test.routes)

And call

 (defservice test.routes/app-routes)

In servlet.clj, the WAR compiles fine and it is working flawlessly in tomcat. Is there some bug in my code that I fail to see? Why do I need to call test.routes/... instead of just routes/...?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我的奇迹 2024-11-20 12:04:59

您需要将其放入向量中:

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

You need to put it inside a vector:

(:require [test.routes :as routes])
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文