我正在使用 Compojure Web 应用程序框架和 Maven 编写一个用 Clojure 编写的简单 Web 应用程序。
这是我的 servlet 的简化版本:
(ns core
(:use compojure.core ring.util.servlet)
(:require [compojure.route :as route])
(:gen-class :extends javax.servlet.http.HttpServlet))
(defroutes main-routes
(GET "/" _ {:status 302 :headers {"Location" "/about"}})
(GET "/about" [] "This is the about page")
(route/not-found "File not found."))
(defservice main-routes)
使用 Maven 的 Jetty 目标可以正常工作,如下所示:
mvn jetty:run
但是,当我以此构建 WAR 并将其部署在 Tomcat 上时,我总是看到我的 404 页面,即“找不到文件。”。你能告诉我为什么会这样吗?
我按如下方式构建WAR:
mvn package
我注意到 Tomcat 中有一个关于重复 servlet-api.jar 的警告,而 Maven 确实将它放入了 WEB-INF/lib。我从 WAR 中删除了 servlet-api.jar 仍然遇到同样的问题,但这是否意味着我的整个 WAR 打包过程有问题?
这可能是不同 URL 路径的问题吗?当我启动一个本地 Jetty 时,URL 如下:
但是如果我在 Tomcat 上启动它,它是这样的:
http://localhost:8080/myapp/home
那么“/myapp”可能是路线的一部分吗?我将如何解决这个问题?