Eclipseの動的Webモジュール設定の値を間違えて起動できなくなる


Eclipseの設定の話です。

いつも同じミスしてる気がするのでメモしておきます。

動的Webモジュール設定の問題と解決

EclipseでJavaを使ってWebサービス、Webアプリを開発するとき、WTPというものを使うと思いますが、そこではこんな感じの設定ができます。

スクリーンショット 2014-05-18 17.08.00

プロジェクト・ファセット

動的Webモジュール

ここで動的Webモジュール3.1を選べるのですが、これを選ぶとサーバ実行できなくなります。

スクリーンショット 2014-05-18 17.08.17

じゃあ元に戻そう、と思うと3.1より下に下げることができなかったりします。

修正方法は色々なページにある通りワークスペース内の当該プロジェクトの下にある以下のファイルを修正すればOKです。

スクリーンショット 2014-05-18 17.10.19

ファイルパス:<自分のワークスペース>/<自分のプロジェクト>/.settings/org.eclipse.wst.common.project.facet.core.xml

修正箇所:version=“3.1”の部分 2.4とかにすればOKです。

原因予想

よく分かっていませんが、おそらく動的Webモジュールってサーブレットのバージョンのことなのではないかな、と。

Tomcatの公式ドキュメントを見るとServlet Spec 3.1はTomcat 8.0.xと対応していると書いてあります。Eclipse上のWTPがTomcat8に対応していないし、Tomcat8も無いからサーバ実行できなかったのでは無いかなと思っています。

私はPleiades all in one, Eclipse 4.3.2 Keplerを使っていますが、WTPバージョンは3.5.2です。http://projects.eclipse.org/projects/webtools/releases/3.6.0/bugsのページを見ると分かるようにTomcat8のサポート(issue番号422340)はWTPバージョン3.6.0からです。そりゃ現状ではTomcat8使えませんよ、ってことですね。

という訳で動的WebモジュールはTomcatの公式ドキュメントを参照して使用するTomcatバージョンに合わせて適切に設定しましょう。(Tomcat7なら3.0を設定する、など)

EclipseでTomcat8を使いたい場合はこちらの記事を参照ください。