Maven を依存関係マネージャーとして使用して、IntelliJ で Compojure ベースの Clojure Web アプリケーションを使用しています。これは、この例で参照されているこのgitリポジトリで見つけたアプリケーションに基づいています。IntelliJ の Tomcat6 構成を使用してアプリケーションを実行しようとすると、サーブレット例外を引用するたびに失敗します。
javax.servlet.ServletException: Wrapper cannot find servlet class tracker.core or a class it depends on
さらに web.xml を見ると、IntelliJ はサーブレット クラスを認識しません (tracker.core が強調表示されています)。
少し背景:
このアプリケーションはもともと、クライアント向けの概念実証として作成されたもので、最近会社を辞めた同僚によって作成されました。個人的には、この 2 日間このプロジェクトに取り組んだ以外に、clojure に関する経験はありません。Leiningen リング サーバーを使用すると、アプリケーションを 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 Newb であるため、2 つのリンクしか取得できません :/