サンプル集  >  other  >  Dynamic Web Module 3.1 requires Java 1.7 or newer
Dynamic Web Module 3.1 requires Java 1.7 or newer
2015/08/28

Dynamic Web Module 3.1 requires Java 1.7 or newerというエラーが出ました。

◆環境
OS Windows 7 Professional Service Pack 1 (64bit)
eclipse Luna Service Release 1 (4.4.1)
m2e 1.5.0.20140606-0033
m2e-wtp 1.1.0.20140611-1646

eclipseのMarkersにこのエラーが出ています。


「Dynamic Web Module 3.1 は Java 1.7以上が必要です」という事だと思いますが、既存のプロジェクトはJava 1.6で作られているため1.7に上げることができません。 なんとかJava 1.6のまま進められないか調べてみます。

関係ありそうなキーワードと感想

Dynamic Web Moduleとは、動的Webモジュールの事だと思います。

eclipseでJavaを使ってWebアプリを開発するときにWTPというものを使う。 ここで動的モジュールを選択できる。

この場合、プロジェクトルートフォルダの配下にある ./settings/org.eclipse.wst.common.project.facet.core.xmlのjst.webのversion="3.1"を2.4に変更すればよいとの事です。

しかし、エラーが出ているプロジェクトフォルダの配下の ./settingsフォルダ内に該当のファイルがありませんでした。

  1. 動的Webモジュールとはサーブレットのことである模様。
  2. Server Spec 3.1はTomcat 8.0.xに対応。
  3. eclipseのWTPはバージョン3.6.0からTomcat8に対応している。
  4. WTPはWeb Tools Platformの略である模様。
  5. WTPはeclipse上でWeb(J2EE)アプリケーションの開発を行うためのplgu-in。
  6. WTPはEclipse IDE for Java EE Developersに標準で入っている。
  7. WTPはWST(Web Standard Tools)とJST(J2EE Standard Tools)の2つのサブプロジェクトで構成されている。
  8. WSTはJ2EEに依存しない部分(HTML、XML、SQLなど)
  9. JSTはJ2EEに特化した部分(Servlet、JSP、EJBなど)

eclipseの[Window]-[Preferences]を開きTomcatのバージョンを確認します。


Tomcatのバージョンは6.0.41ですね。

WTPのバージョンを確認します。

eclipseの[Help]-[About Eclipse]を開きます。

「wtp」のアイコンをクリックします。


Eclipse Web Developer Toolsのバージョンは 3.6.1.v201409112028 になっています。

ビルドが通っている環境のバージョンは 3.2.5.v201106202200-7O7CFbkEMh85QwIFv83KZ5f9rXw6jU_CvbVrOjx でした。

javax-servletのバージョン確認

プロジェクトを右クリックし[Properties]を選択します。 ウィンドウが開いたら[Java Build Path]を選択し、[Libraries]タブを選択し、[Maven Dependencies]を展開します。


javax-servlet-apiが3.1.0の模様です。

pom.xmlでバージョン2.4を指定してみます。 version要素がなかったので新たに追加しました。

pom.xml
1: 
2: 
3: 
4: 
5: 
6: 
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.4</version>
      <scope>provided</scope>
    </dependency>

警告が出ました。

親のpom.xmlにバージョンの記載があったため警告が出たようです。 しかし、親のpom.xmlのバージョンは2.4と書かれていました。 なぜ3.1が配置されているのでしょうか。

Librariesをよく見てみると、javax.servlet-api-3.1.0.jarの他にservlet-api-2.4.jarも設定されていました。


依存関係のある別のプロジェクトのpom.xmlにjavax.servlet-apiの3.1の指定があったのでコメントアウトします。

pom.xml
1: 
2: 
3: 
4: 
5: 
6: 
7: 
<!--
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
    </dependency>
-->

Librariesからjavax.servlet-api-3.1.0.jarは消えました。 しかし、依然としてDynamic Web Module 3.1 requires Java 1.7 or newerというエラーが出ています。

Maven Additionalメニューから3.1の方を無効にできるようです。 プロジェクトのプロパティを開きます。


動いている環境の方ではMavenの下にMaven Additionalという項目がありましたが、今の環境では項目がありませんでした。

Maven Integration for Eclipseのバージョンが古いのでしょうか。 [Help]-[Eclipse Marketplace...]を開きmaven integrationを検索します。


Updateボタンが押せるようになっていたので押します。


Confirmを押します。


I accept the terms of the license agreementをチェックしFinishを押します。

インストール後、eclipseを再起動したらDynamic Web Module 3.1 requires Java 1.7 or newerというエラーが消えました。 プロジェクトのプロパティにはMaven Additionalは出ないままでした。

結局何が原因だったのかいまいちはっきりしませんでした。

▲ PageTop  ■ Home


Copyright (C) 2015 ymlib.com