web-dev-qa-db-ja.com

プロジェクトファセットDynamic Web Moduleのバージョンを3.0に変更できませんか?

私はMavenを使ってEclipseで動的Webアプリケーションを作成しています。 src/test/Javasrc/test/resourcesのようなフォルダをいくつか追加しました。また、JavaビルドパスのライブラリをJavaSE-1.7に変更しました。これですべて問題ありません。

Projects Facet Dynamic Webモジュールを変更しようとしたときに、問題が発生しました。私は同じ場所でJavaを1.7に変更しました。それでもまだ私に言った、プロジェクトファセットの動的Webモジュールのバージョンを3.0に変更することはできません。

私は私が思う変化に影響を与えるだろうすべてを変えました。

315
EdgarZeng

web.xmlを更新しました

<web-app xmlns="http://Java.Sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee 
          http://Java.Sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">
    <display-name>Servlet 3.0 Web Application</display-name>
</web-app>

そして Maven - > Update Project ...

301
Sydney

もう1つの方法は、プロジェクトファセット設定ファイル自体を編集することです。org.Eclipse.wst.common.project.facet.core.xml

この行の動的Webモジュールのバージョンを3.0に変更します - <installed facet="jst.web" version="2.5"/>

その後:

  1. プロジェクトを右クリックします(プロジェクトエクスプローラパネル内)。
  2. Maven"Update Project(またはを押します。 Alt+F5

このファイルはEclipseプロジェクト内の.settingsディレクトリにあります。

561
enkor

私はあなたと同じ問題を抱えていたと思います。私のweb.xmlはバージョン2.5でしたが、プロジェクトは(プロジェクト - >プロパティ - >プロジェクトファセット - >を右クリックして)動的Webモジュール2.3を持っていました。

バージョンを2.3から2.5に変更しようとしましたが、Eclipseでは許可されていませんでした。解決方法:動的Webモジュールという見出しの下のチェックマークを外して保存し、プロジェクトを更新しました。自動的に目覚めさせることは正しいバージョンで箱に入ることです。私はEclipse Keplerを使っています。

p.s .:すぐ下の Jonathanのコメント を見てください。非常に便利です。

162
pagurix

私は同じ問題を抱えていました、そして私もプロジェクトを削除して、もう一度それを追加しようとしました。トリックは.settingsディレクトリを削除することでした。

41
Adrian Ber
  1. プロジェクトフォルダをクリックしてください。
  2. ウィンドウ>ビューの表示>ナビゲータに移動します。
  3. ナビゲーターに移動して、.settingsフォルダーを展開します。
  4. org.Eclipse.wst.common.project.facet.core.xmlファイルを開く

    <?xml version="1.0" encoding="UTF-8"?>
    <faceted-project>
      <fixed facet="wst.jsdt.web"/>
      <installed facet="jst.web" version="2.3"/>
      <installed facet="wst.jsdt.web" version="1.0"/>
      <installed facet="Java" version="1.8"/>
    </faceted-project>
    
  5. このようにバージョンを変更してください<installed facet="jst.web" version="3.1"/>

  6. 保存する
  7. プロジェクトを更新するだけです。プロジェクトフォルダを右クリック> Maven>プロジェクトの更新>プロジェクトを選択して「OK」をクリック

これだけでうまくいきました。

41
aabarbosa

削除する

.settings 
.classpatch 
.projejct 
target

mavenプロジェクトをもう一度インポートしてください。

22
Pintér Tamás

私にとってうまくいったこと:

  1. Javaを1.8 (または1.7)に変更します。

あなたのPOMでは - <build>セクションでコンパイラプラグインをバージョン1.8(または1.7)に設定する必要があります。

  <build>
    ...
      <plugins>
        <plugin>
          <groupId>org.Apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.6.0</version>
          <configuration>
            <source>1.8</source>
            <target>1.8</target>
          </configuration>
        </plugin>  
      </plugins>    
  </build>

変更Javaビルドが1.8を表示していることを確認してください。そうでない場合 - EDITをクリックして、それがあるべきものを選択してください。

enter image description here

  1. バージョン3.0およびリンク内で3.0が参照されるようにweb.xmlを変更します

enter image description here

  1. プロジェクトファセットでJavaが1.8に設定されていることを確認してください

enter image description here

  1. この段階ではまだ動的Webモジュールを変更できませんでした。

変更する代わりに、

a) チェックなし 動的Webモジュール

b) 適用

c) もう一度確認してください。 新しいバージョン3.0を設定する必要があります。**

enter image description here

適用して再度確認した後:

enter image description here

お役に立てれば。

20
Witold Kaczurba

プロジェクト プロパティ を右クリックします。 プロジェクトファセット で、 動的Webモジュール (バージョンは 3.1 でなければならない)を選択解除し、 JavaServer Faces (バージョンは 2.2 である)を選択解除する。

これを変更してください。

<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">

これに:

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://Java.Sun.com/xml/ns/javaee" xmlns:javaee="http://xmlns.jcp.org/xml/ns/javaee"
    xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee http://Java.Sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">

それからparam-nameなどの前の接頭辞を削除します。

Maven - > プロジェクトの更新

15
henry ren

navigatorビューを開いて次のステップに進んでください。

  1. (「ウィンドウ」>「ビューの表示」>「その他」>「一般」)を選択し、プロジェクトの下に.settingsフォルダーがあることを確認し、それを展開して「org.Eclipse.wst.common.project.facet.core.xml」ファイルを開きます。以下を変更してファイルを保存します。
  2. この行の動的Webモジュールのバージョンを2.5に変更します -
  3. この行のJavaバージョンを1.5以上に変更します - 。
8

プロジェクト構造からweb.xmlを開くhttp://Java.Sun.com/xml/ns/javaee/web-app_3_0.xsd "version =" 3.0 ">サーブレット3.0 Webアプリケーション

たとえばweb.xmlファイルを変更して、change version = "2.5"とします。

プロジェクトの.settingsファイルからorg.Eclipse.wst.common.project.facet.core.xmlファイルも変更します。ステップ1に従います。ウィンドウ>ビューの表示>その他>一般>ナビゲーター

  1. プロジェクトディレクトリの下に.settingsフォルダがあります。

  2. この行の動的Webモジュールのバージョンを2.5に変更します。4.この行のJavaのバージョンを1.5以上に変更します。

プロジェクトを更新して、サーバー上で実行するように設定します。

解決策のためのブログに従ってください http://scrapillars.blogspot.in/2014/02/how-to-change-project-facet-in-Eclipse.html

ソリューションはイメージイラストで制作されています

6
Siddaram

1) プロパティ - > プロジェクトファセット - > 動的Webモジュールのチェックボックスの選択を解除/マーク解除 - >適用2)今すぐに変更希望のバージョン適用3) 動的Webモジュール チェックボックスをオンにします。 - あなたは今 - 完了 -

6
sunny

彼らはこの問題を解決するもう一つの方法です(それがあなたがあなたの問題を解決するのを助けることを望みますそれをチェックしてください)

_問題_

プロジェクトファセット動的Webモジュール2.3のバージョンを3.0に変更することはできません。

_ソリューション_

  1. プロジェクトの場所に移動します(例:-D:/ maven/todo)
  2. .settingフォルダに移動します
  3. このファイルを確認してください:org.Eclipse.wst.common.project.facet.core.xml
  4. ファイルを開き、 "jst.web"プロパティを2.3から3.0に変更して保存します。
  5. プロジェクトを右クリックしてプロジェクトを更新し、Mavenを更新します
  6. 完了しました!!!.
4
chhaya Joshi

私は同じ問題を抱えていました、web.xmlを編集することだけでなく、.settingsフォルダ内のファイルを変更することだけでは役に立ちませんでした。私の解決策は、pom.xmlを編集して、希望するJavaバージョンを使用するようにMavenコンパイラプラグインを直接指示することでした。

  <build>
    ...
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
    </plugins>    
  </build> 

今度はMaven->プロジェクトの更新を実行し、その後、プロパティ - >プロジェクトファセット - >動的Webモジュールのバージョンでサーブレットのバージョンを変更することができます。プロジェクトの.settingsフォルダー内のxml。

3
troy

コンテナが何をサポートしているかにかかわらず、その特定のバージョンのサーブレットを使用していることをWTPに明示的に伝えているので、web.xmlのトリックはうまくいきます。

私の場合は、Mavenプロジェクト内でアノテーション設定を使用していますが、web.xmlファイルはありません。 web.xmlがない場合、WTPはMavenの依存関係を調べて、使用するサーブレットのバージョンを決定します。私の場合は、次のように定義しました。

<dependency>
  <groupId>javax</groupId>
  <artifactId>javaee-api</artifactId>
  <version>7.0</version>
  <scope>provided</scope>
</dependency>

これを6.0に変更すると問題が解決し、現在は3.1ではなくServlet 3.0を使用しています。これはJavaEE 7のデフォルトです。Tomcat8からTomcat 7に移行する必要があるので、Tomcat 7はJavaEE 6 Webプロファイルのみをサポートします。今物事は素晴らしく動作します。

2

.settingsフォルダを削除しても問題は解決しました。

2
Nagababu

私の場合、web.xmlはdtdによって参照されていました。これをシドニーが投稿したもののようなxsd参照に変更した後はうまくいきました。

2
keiki

それでもシドニーの答えが役に立たない場合は、以下を試してください。シドニーの回答に従った後、[プロパティ]> [プロジェクトファセット]の順に選択して[動的Webモジュール]の選択を解除し、Web.configに合わせてバージョンを変更してからもう一度選択します。適用>保存してからMavenアップデート。

web.xml

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:web="http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="Web_App_1" version="3.1">

<display-name>JavaServerFaces</display-name>

<!-- Change to "Production" when you are ready to deploy -->
<context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
</context-param>

<!-- Welcome page -->
<welcome-file-list>
    <welcome-file>jsfs/hello.xhtml</welcome-file>
</welcome-file-list>

<!-- JSF mapping -->
<servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<!-- Map these files with JSF -->
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>jsfs/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.faces</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
1
punkck

Eclipse(Mars)のプロジェクトファセットDynamic Web Moduleのバージョンを変更できなかった問題に対する私の解決策は、

  • Maven Natureを無効にする
  • Web.xml名前空間が正しいバージョンを指していることを確認してください。
  • Maven Natureを再び有効にする
  • Maven»プロジェクトを更新(またはAlt + F5を押す)
1
Andrés S.

私はここで多くの答えを試しましたが、どれも私のために働きませんでした。それから私は私の問題についての記事を見つけました ここ 。私もここでそれを共有することを考えました。

以下に簡単に説明する手順を示します。

  1. コンパイラ準拠レベルを設定します。
  2. プロジェクトファセットの更新
  3. 設定からインストール済みのJREを更新する
  4. Java 1.7を使うようにpom.xmlに設定を追加する
  5. mavenからプロジェクトを更新しています。
1
Md Faisal

Maven Eclipse Webプロジェクトの場合、動的Webモジュールのバージョンを変更するには、3か所をチェックする必要があります。 Eclipseを使用していて、次のことを確認した後の場合は、1)web.xml

<web-app xmlns="http://Java.Sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee 
          http://Java.Sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">

2)メイヴン:

<dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.0.1</version>
      <scope>provided</scope>   ## ensure you have Tomcat 7 not other version
</dependency>

<plugin>
      <groupId>org.Apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.0</version>
      <configuration>
            <source>1.7</source> ## at least 6
            <target>1.7</target>
      </configuration>
</plugin>

3)Eclipseビルドパスとコンパイラのバージョンは1.7です。

あなたはまだmavenにエラーマーカーを持っています:

cannot change version of project facet dynamic web module to 3.0 one or more constrants have not been satisfied

その後、次のことができます。動的Webモジュールのチェックを外して、もう一度チェックします。どういうわけかEclipseファイルの.settingsが壊れているからだと思います。 2番目のヒントについて Tomcatのどのバージョン は良いメモです。

1
Tiina

私は同じ問題を抱えていました - 私は自分のワークスペースからプロジェクトを削除し、それから "Eclipseのファイル/フォルダ、例えば.project、.settingsなど)を片付け、そしてMavenプロジェクトを再度インポートしました。

0
Thomás Preis

Org.Eclipse.wst.common.project.facet.core.xmlファイルを開き、jst.webのバージョンを3.0に変更します。また、web.xmlをバージョン3.0に更新します。プロジェクトを保存して更新します。お役に立てれば。 Eclipse Junoを使用しています

0
Sheetal

Mavenのアップデートやプロジェクトの再インポートは役に立ちませんでした。 @シドニーの答えは正しいです。さらに、 JavaServer Faces 2.2にはDynamic Web Module 2.5以降が必要 に記載されているように、異なるワークスペースでプロジェクトを再作成する必要があります。

0
kashili kashili

鉱山はWeb Module 3.0ではweb.xmlでしたが、properties>Dynamic Web Moduleでは3.1にありました

私はweb.xmlをこれに変更しました:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://Java.Sun.com/xml/ns/javaee" xmlns:web="http://Java.Sun.com/xml/ns/javaee/web-app_3_0.xsd" xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee http://Java.Sun.com/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">

この変更後は、次のようにします。right click on project>Maven>Update Project...

0
Amin Sh

私は別の治療法で同じ症状がありました。私はそこに新しいJSF WebSocketフックを楽しむためにJSF 2.2.4/Spring 3.0 WebアプリケーションをJSF 2.3にアップグレードしようとしていました、そしてEclipse(実際にはSTS)は協力しませんでした。 EclipseのProject Facetsでは、前回の回答で示したようにorg.Eclipse.wst.common.project.facet.core.xmlファイルを直接編集するまでJSF 2.3は使用可能になりませんでした。最高のものは2.2でした。

これが私が飛び越えたフープです。私は基本的にこの構成をすべて理解しているわけではないので、これらすべてが必要であることを知りません。

Eclipseでは、「インストールされた1つ以上のファセットの実装が利用できないときにファセットプロジェクトを変更すると、プロジェクトが破損する可能性があるため、プロジェクトを破損させる可能性があります。続行してもよろしいですか?」これは私がもっと頻繁にコミットするように促しましたが、破損は起きませんでした。

  1. POM、Eclipseコンパイラー、およびEclipse Project FacetsでJDKを1.7から1.8にアップグレードします。
  2. 以下のMavenの依存関係を更新します。

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.4</version>
        <scope>provided</scope>
    </dependency>
    

    ... to:

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.0</version>
        <scope>provided</scope>
    </dependency>
    

...そして...

    <dependency>
        <groupId>com.Sun.faces</groupId>
        <artifactId>jsf-api</artifactId>
        <version>2.2.4</version>
    </dependency>
    <dependency>
        <groupId>com.Sun.faces</groupId>
        <artifactId>jsf-impl</artifactId>
        <version>2.2.4</version>
    </dependency>

... to:

    <dependency>
        <groupId>javax.faces</groupId>
        <artifactId>javax.faces-api</artifactId>
        <version>2.3</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>javax.faces</artifactId>
        <version>2.3.0</version>
    </dependency>
    <dependency>
        <groupId>javax.enterprise</groupId>
        <artifactId>cdi-api</artifactId>
        <version>2.0</version>
    </dependency>

私は自分のweb.xml名前空間宣言を以下から更新しなければなりませんでした。

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://Java.Sun.com/xml/ns/javaee" xmlns:web="http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd" 
xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">

... to:

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://Java.Sun.com/xml/ns/javaee" xmlns:web="http://Java.Sun.com/xml/ns/javaee" 
xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee http://Java.Sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

Project Facets - > Dynamic Web Moduleを2.5から3.0に更新しなければなりませんでした。私は3.1を試しましたが、エラーが出ました。

このプロセスの中で、私は頻繁にこの記事のタイトルに「プロジェクトファセットの動的Webモジュールのバージョンを3.0に変更できません」というエラーを受け取り、Eclipseはプロジェクトのコンパイルを拒否したり、プロジェクトファセットでJSF 2.3を提供しませんでした。エラーが消えるようにorg.Eclipse.wst.common.project.facet.core.xmlファイルを編集したときに、EclipseはProject FacetsでJSF 2.3を提供し、プロジェクトはTomcat 9.0.8でコンパイルされ、正常に実行されました。しかし、プロジェクトファセットは「プロジェクトファセットjst.jsfのバージョン2.3の実装は見つかりませんでした。機能は制限されるでしょう」と警告しています。私のPOMで宣言されているJSF 2.3実装が見つからないため、これは単にオートコンプリートやその他のEclipseの便利機能が利用できなくなることを意味しているのではないかと思います。

これが誰かに役立つことを願っています。 Googleの検索結果は この記事 ALi Bassamと間接的にBalusCによるものでした。

0
snakedog

mavenの更新 私のために働いた

プロジェクトを選択してから ALT + F5 を押し、プロジェクトを選択して[OK]をクリックします。

0
Hari

一般的なJavaプロジェクトをMavenプロジェクトに変換しようとすると、このエラーが発生しました。

私がしたことは、私のプロジェクトに必要なJavaコンパイラーのバージョンを決定することでした。私のプロジェクトでは、Javaの最小バージョンは1.8です。

1.8 my IDEよりも低いバージョンにバージョンを下げると、インポートされたライブラリーの束を認識しないという不満が出始めます。したがって、最小のJavaバージョンは1.8

1. Right click your project
2. Go to Properties
3. Left hand-side panel, click "Project Facets"
4. For Java, set the version according to your minimum version

enter image description here

ここで、JavaコンパイラーバージョンがProject Facetsで設定したものと同じJavaバージョンを使用していることを確認してください。

1. Right click your project
2. Go to Porperties
3. Left hand-side panel, click "Java Compiler"
4. Make sure Java Compiler version is the same. 
5. If it is not the same, change the version. (Uncheck "Use compliance from execution environment' if needed to make the changes.

enter image description here

変更後、エラーを解決する必要があります。それでもエラーが発生する場合は、プロジェクトを右クリック-> Maven->プロジェクトの更新

0
user3437460

これはpagurixの答えのバリエーションですが、Eclipse Marsを使用しています。

Web.xmlファイルをweb.bakに変更します。

エラーを無視して、次に再生成します。

プロジェクトのプロパティ - >プロジェクトファセットに移動して、動的Webモジュールのバージョンを必要なものに設定します。 Eclipseで保存できるようになりました。

プロジェクトを右クリックしてください。 「Java EEツール」 - >「デプロイメント記述子スタブの生成」を選択します。

これにより、必要なバージョンの新しいweb.xmlが作成されます。

新しいweb.xmlを開き、XMLヘッダーと完全なWebアプリ開始タグを元のweb.bakにコピーし、新しいweb.xmlを削除してweb.bakの名前をweb.xmlに戻します。

完了しました。

0
Adam

私はweb.xmlの変更を正しいバージョン、xsdの場所、org.Eclipse.wst.common.project.facet.core.xmlの変更を正しいバージョンにして実行することで問題を解決しました。Maven Update

0
Vaibs

バージョンの問題 - プロジェクトを右クリック - >プロパティ - >プロジェクトファセット - > Dynamic Web Moduleを右クリック - >ロック解除 - >チェック解除 - >バージョン2.5を選択 - >適用 - > mavenを更新

0