tomcat maven clojure intellij-idea compojure

Clojure Webapp en IntelliJ+Maven+Tomcat



intellij-idea compojure (1)

Necesita compilar su clojure namespace tracker.core antes de tiempo (AOT). No estoy seguro de cómo se hace con el complemento de Maven, pero te da la dirección correcta.

Asegúrese de tener una declaración gen-class en su espacio de nombres:

(ns tracker.core ;; ... (:gen-class :extends javax.servlet.http.HttpServlet))

Compruebe que Intellij / Maven realmente produzca el rastreador de archivos / core.class en el directorio de destino.

Estoy trabajando con una aplicación web basada en Compojure Clojure en IntelliJ usando a Maven como mi administrador de dependencias. Se basa en una aplicación que encontré en este repositorio git referencia en this ejemplo. Cuando intento ejecutar la aplicación utilizando la configuración de Tomcat6 de IntelliJ, falla cada vez que se cita una excepción de Servlet:

javax.servlet.ServletException: Wrapper cannot find servlet class tracker.core or a class it depends on

Además, al mirar el web.xml, IntelliJ no reconoce la clase de servlet (tracker.core está resaltado).

Un poco de fondo:

Esta aplicación se creó originalmente como prueba de concepto para un cliente y fue escrita por mi compañero de trabajo que recientemente dejó la empresa. Personalmente no tengo experiencia con clojure más allá de trabajar en este proyecto en los últimos dos días. Al usar el servidor de anillo de Leiningen, puedo hacer que la aplicación se ejecute en Jetty. Usando leiningen ring uberwar, la guerra resultante se despliega y ejecuta con éxito en Tomcat.

La estructura del archivo original se ve así:

/tracker-webapp /classes /lib /resources /src /tracker /core.clj (and other *.clj files) /test project.clj

La nueva estructura de archivos mavenized ahora refleja el ejemplo en el repositorio de git mencionado anteriormente:

/tracker-webapp /src /main /clojure /tracker /core.clj (and other *.clj files) /webapp /WEB-INF /web.xml /pom.xml

Mi 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>

Otros recursos

Iba a publicar los otros recursos que he visto en esta sección, pero como soy un Newb de Desbordamiento de Pila, solo obtengo dos enlaces: /