我正在使用基于Compojure的Clojure Web应用程序,并在IntelliJ中使用Maven作为我的依赖管理器。 它基于我在此Git存储库中找到的应用程序,由此示例引用。 当我尝试使用IntelliJ的Tomcat6配置运行应用程序时,它每次都会失败并引用Servlet异常:
javax.servlet.ServletException: Wrapper cannot find servlet class tracker.core or a class it depends on
此外查看web.xml文件,IntelliJ无法识别servlet类(tracker.core被突出显示)。
一些背景信息:
这个应用最初是作为一个客户的概念验证而构建的,并由我的同事编写,他最近离开了公司。我个人对Clojure没有任何经验,除了在过去两天里参与了这个项目之外。使用Leiningen ring服务器,我可以成功地在Jetty中运行该应用程序。使用Leiningen ring uberwar,生成的war文件可在Tomcat中成功部署和运行。
原始文件结构如下:
/tracker-webapp
/classes
/lib
/resources
/src
/tracker
/core.clj (and other *.clj files)
/test
project.clj
新的maven文件结构现在与之前提到的git存储库中的示例相同。/tracker-webapp
/src
/main
/clojure
/tracker
/core.clj (and other *.clj files)
/webapp
/WEB-INF
/web.xml
/pom.xml
我的 web.xml 文件:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>Simple Clojure WebApp</display-name>
<servlet>
<servlet-name>myservlet</servlet-name>
<servlet-class>tracker.core</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>myservlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
其他资源
我原本想在这个部分发布我查看过的其他资源,但由于我是一个 Stack Overflow 新手,我只能获得两个链接 :/