347

Maven を使用して、Eclipse で動的 Web アプリケーションを作成しています。src/test/javaとのようないくつかのフォルダーを追加しましsrc/test/resourcesた。また、Java Build Path のライブラリを変更して JavaSE-1.7 を取得しました。ここまでは大丈夫です。

Projects Facet Dynamic Web Module を変更しようとしたときに、何か問題が発生しました。同じ場所でJavaを1.7に変更しました。それでも、プロジェクトファセットDynamic Web Moduleのバージョンを3.0に変更できないと言われました。

私は、私が考える変化に影響を与えるすべてのものを変えました。

4

31 に答える 31

321

更新しました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 -> プロジェクトの更新 ...

于 2013-08-21T15:34:03.397 に答える
181

私はあなたと同じ問題を抱えていたと思います。私の web.xml にはバージョン 2.5 がありましたが、プロジェクトには ([プロジェクト] -> [プロパティ] -> [プロジェクト ファセット] -> を右クリック) Dynamic Web Module 2.3 がありました。

バージョンを 2.3 から 2.5 に変更しようとしましたが、ECLIPSE はそれを許可しませんでした。解決策: 動的 Web モジュールの見出しの下にあるチェック マークを外し、保存して、プロジェクトを更新しました。自動的に再覚醒すると、正しいバージョンでボックスに入ります。私はエクリプスケプラーを使っています。

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

于 2014-02-04T08:57:29.817 に答える
53
  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] をクリックします。

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

于 2017-01-21T11:32:18.457 に答える
15

プロジェクトを右クリック→プロパティ; Project Facetsで、Dynamic Web Module (バージョンは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 -> Update project

于 2015-05-02T01:57:19.247 に答える
4

彼らはこの問題を解決するもう1つの方法です(問題の解決に役立つことを願ってチェックしてください)

問題

プロジェクト ファセット動的 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. 終わり!!!....
于 2016-11-29T09:19:39.847 に答える
3

私は同じ問題を抱えていました.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->Update project を実行すると、その後、プロパティ->プロジェクト ファセット->動的 Web モジュール バージョンでサーブレットのバージョンを変更できます。プロジェクトの .settings フォルダーにある xml。

于 2015-01-22T12:54:46.120 に答える
3

コンテナーが何をサポートしているかに関係なく、特定のサーブレット バージョンを使用していることを 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 に変更すると問題が解決し、JavaEE 7 のデフォルトである 3.1 の代わりに Servlet 3.0 を使用するようになりました。今、物事は素晴らしく機能します。

于 2014-02-14T13:28:52.653 に答える
2

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

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

私のIDEよりも低いバージョンにバージョンを下げると1.8、インポートされたライブラリの束を認識しないと不平を言い始めるので、私の最小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

ここに画像の説明を入力

ここで、Java コンパイラのバージョンが、プロジェクト ファセットで設定したものと同じ 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.

ここに画像の説明を入力

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

于 2019-07-25T12:17:18.997 に答える
1

シドニーの回答がまだ役に立たない場合は、以下を試してください。Sydney の回答に従った後、[Properties] > [Projects Facets] に移動して [Dynamic Web Module] の選択を解除し、バージョンを 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>

于 2016-02-22T12:44:44.200 に答える
1

ここで多くの答えを試しましたが、どれもうまくいきませんでした。次に、私の問題に関する記事を見つけましたhere . ここでもシェアしようと思いました。

以下は、簡単に行われた手順です。

  1. コンパイラ準拠レベルを設定します。
  2. プロジェクト ファセットの更新
  3. 設定からインストール済みの JRE を更新する
  4. pom.xml に構成を追加して Java 1.7 を使用し、最後に
  5. Maven からプロジェクトを更新しています。
于 2016-02-29T13:29:05.520 に答える
1

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

  • Maven Nature を無効にする
  • web.xml 名前空間が正しいバージョンを指していることを確認してください
  • Maven Nature を再度有効にする
  • Maven » プロジェクトの更新 (または Alt+F5 を押す)
于 2016-01-13T16:21:16.907 に答える
0

このバージョンの問題は、プロジェクトを右クリック->プロパティ->プロジェクトファセット->動的Webモジュールを右クリック->ロックを解除->チェックを外す-> 2.5バージョンを選択->適用-> mavenを更新

于 2016-02-15T06:21:47.147 に答える
0

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

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

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

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

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

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

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

終わり。

于 2016-01-26T10:45:23.063 に答える
0

私は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...

于 2016-02-21T17:38:57.383 に答える
0

プロジェクトをmaven updateまたは再インポートしても役に立ちませんでした。@シドニーの答えは正しいです。さらに、 JavaServer Faces 2.2 には Dynamic Web Module 2.5 以降が必要であると言われているように、別のワークスペースでプロジェクトを再作成する必要があります。

于 2014-03-12T22:07:37.767 に答える
0

私は別の治療法で同じ症状を経験しました。JSF 2.2.4/Spring 3.0 webapp を JSF 2.3 にアップグレードして新しい JSF websocket フックを利用しようとしましたが、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>
    

    ... に:

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

... に:

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

... に:

<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 で正常に実行されました。ただし、Project Facets は依然として「プロジェクト ファセット jst.jsf のバージョン 2.3 の実装が見つかりませんでした。機能が制限されます。」と警告しています。これは、POM で宣言された JSF 2.3 実装が見つからないため、オートコンプリートやその他の Eclipse の便利な機能が利用できないことを意味しているだけだと思います。

これが誰かに役立つことを願っています。Google 検索では、Ali Bassam によるこの投稿のみが得られ、間接的に BalusC が役立ちました。

于 2018-05-10T16:16:11.857 に答える
-1

私は同じ問題を抱えていました-ワークスペースからプロジェクトを削除し、「Eclipseファイル/フォルダー、たとえば.project、.settingsなど)をクリーンアップしてから、mavenプロジェクトを再度インポートしました。うまくいきました。

于 2019-02-08T10:31:48.383 に答える