首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >IntelliJ + Maven + Tomcat中的Clojure Webapp

IntelliJ + Maven + Tomcat中的Clojure Webapp
EN

Stack Overflow用户
提问于 2012-02-03 23:56:54
回答 1查看 985关注 0票数 17

我正在使用IntelliJ中的一个基于Compojure的Clojure web应用程序,使用Maven作为我的依赖项管理器。它基于我在this example引用的git存储库中找到的一个应用程序。当我尝试使用IntelliJ的Tomcat6配置运行应用程序时,每次都会失败,并出现Servlet异常:

代码语言:javascript
复制
javax.servlet.ServletException: Wrapper cannot find servlet class tracker.core or a class it depends on

另外,在查看web.xml时,IntelliJ无法识别servlet类(突出显示了tracker.core)。

下面是一些背景知识:

这个应用程序最初是作为一个客户的概念验证而构建的,由我最近离开公司的同事编写。除了过去两天在这个项目上的工作之外,我个人没有使用clojure的经验。使用Leiningen环服务器,我可以成功地让应用程序在jetty中运行。使用leiningen ring uberwar,生成的war成功地在tomcat中部署和运行。

原始文件结构如下:

代码语言:javascript
复制
/tracker-webapp  
    /classes
    /lib
    /resources
    /src
        /tracker
            /core.clj (and other *.clj files)
    /test
    project.clj

新的mavenized文件结构现在反映了前面提到的git代码库中的示例:

代码语言:javascript
复制
/tracker-webapp
    /src
        /main
            /clojure
                /tracker
                    /core.clj (and other *.clj files)
            /webapp
                /WEB-INF
                    /web.xml
    /pom.xml

我的web.xml:

代码语言:javascript
复制
<?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 Newb,我只得到了两个链接:/

EN

回答 1

Stack Overflow用户

发布于 2013-04-21 02:53:13

您需要提前编译clojure名称空间tracker.core。我不确定如何使用maven插件来实现这一点,但它为您指明了正确的方向。

确保您的命名空间中有一个gen-class声明:

代码语言:javascript
复制
(ns tracker.core
  ;; ...
  (:gen-class :extends javax.servlet.http.HttpServlet))

检查Intellij/Maven是否在目标目录中实际生成文件跟踪器/core.class。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9131525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档