私はMavenを使ってEclipseで動的Webアプリケーションを作成しています。 src/test/Java
やsrc/test/resources
のようなフォルダをいくつか追加しました。また、JavaビルドパスのライブラリをJavaSE-1.7に変更しました。これですべて問題ありません。
Projects Facet Dynamic Webモジュールを変更しようとしたときに、問題が発生しました。私は同じ場所でJavaを1.7に変更しました。それでもまだ私に言った、プロジェクトファセットの動的Webモジュールのバージョンを3.0に変更することはできません。
私は私が思う変化に影響を与えるだろうすべてを変えました。
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 ...
もう1つの方法は、プロジェクトファセット設定ファイル自体を編集することです。org.Eclipse.wst.common.project.facet.core.xml
この行の動的Webモジュールのバージョンを3.0に変更します - <installed facet="jst.web" version="2.5"/>
その後:
このファイルはEclipseプロジェクト内の.settings
ディレクトリにあります。
私はあなたと同じ問題を抱えていたと思います。私のweb.xmlはバージョン2.5でしたが、プロジェクトは(プロジェクト - >プロパティ - >プロジェクトファセット - >を右クリックして)動的Webモジュール2.3を持っていました。
バージョンを2.3から2.5に変更しようとしましたが、Eclipseでは許可されていませんでした。解決方法:動的Webモジュールという見出しの下のチェックマークを外して保存し、プロジェクトを更新しました。自動的に目覚めさせることは正しいバージョンで箱に入ることです。私はEclipse Keplerを使っています。
p.s .:すぐ下の Jonathanのコメント を見てください。非常に便利です。
私は同じ問題を抱えていました、そして私もプロジェクトを削除して、もう一度それを追加しようとしました。トリックは.settings
ディレクトリを削除することでした。
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>
このようにバージョンを変更してください<installed facet="jst.web" version="3.1"/>
これだけでうまくいきました。
削除する
.settings
.classpatch
.projejct
target
mavenプロジェクトをもう一度インポートしてください。
私にとってうまくいったこと:
あなたの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をクリックして、それがあるべきものを選択してください。
変更する代わりに、
a) チェックなし 動的Webモジュール
b) 適用
c) もう一度確認してください。 新しいバージョン3.0を設定する必要があります。**
適用して再度確認した後:
お役に立てれば。
プロジェクト → プロパティ を右クリックします。 プロジェクトファセット で、 動的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 - > プロジェクトの更新 。
navigatorビューを開いて次のステップに進んでください。
プロジェクト構造から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に従います。ウィンドウ>ビューの表示>その他>一般>ナビゲーター
プロジェクトディレクトリの下に.settingsフォルダがあります。
この行の動的Webモジュールのバージョンを2.5に変更します。4.この行のJavaのバージョンを1.5以上に変更します。
プロジェクトを更新して、サーバー上で実行するように設定します。
解決策のためのブログに従ってください http://scrapillars.blogspot.in/2014/02/how-to-change-project-facet-in-Eclipse.html
ソリューションはイメージイラストで制作されています
1) プロパティ - > プロジェクトファセット - > 動的Webモジュールのチェックボックスの選択を解除/マーク解除 - >適用2)今すぐに変更希望のバージョン適用3) 動的Webモジュール チェックボックスをオンにします。 - あなたは今 - 完了 -
彼らはこの問題を解決するもう一つの方法です(それがあなたがあなたの問題を解決するのを助けることを望みますそれをチェックしてください)
_問題_
プロジェクトファセット動的Webモジュール2.3のバージョンを3.0に変更することはできません。
_ソリューション_
私は同じ問題を抱えていました、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。
コンテナが何をサポートしているかにかかわらず、その特定のバージョンのサーブレットを使用していることを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プロファイルのみをサポートします。今物事は素晴らしく動作します。
.settingsフォルダを削除しても問題は解決しました。
私の場合、web.xmlはdtdによって参照されていました。これをシドニーが投稿したもののようなxsd参照に変更した後はうまくいきました。
それでもシドニーの答えが役に立たない場合は、以下を試してください。シドニーの回答に従った後、[プロパティ]> [プロジェクトファセット]の順に選択して[動的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>
Eclipse(Mars)のプロジェクトファセットDynamic Web Moduleのバージョンを変更できなかった問題に対する私の解決策は、
私はここで多くの答えを試しましたが、どれも私のために働きませんでした。それから私は私の問題についての記事を見つけました ここ 。私もここでそれを共有することを考えました。
以下に簡単に説明する手順を示します。
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のどのバージョン は良いメモです。
私は同じ問題を抱えていました - 私は自分のワークスペースからプロジェクトを削除し、それから "Eclipseのファイル/フォルダ、例えば.project、.settingsなど)を片付け、そしてMavenプロジェクトを再度インポートしました。
Org.Eclipse.wst.common.project.facet.core.xmlファイルを開き、jst.webのバージョンを3.0に変更します。また、web.xmlをバージョン3.0に更新します。プロジェクトを保存して更新します。お役に立てれば。 Eclipse Junoを使用しています
Mavenのアップデートやプロジェクトの再インポートは役に立ちませんでした。 @シドニーの答えは正しいです。さらに、 JavaServer Faces 2.2にはDynamic Web Module 2.5以降が必要 に記載されているように、異なるワークスペースでプロジェクトを再作成する必要があります。
鉱山は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...
私は別の治療法で同じ症状がありました。私はそこに新しい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つ以上のファセットの実装が利用できないときにファセットプロジェクトを変更すると、プロジェクトが破損する可能性があるため、プロジェクトを破損させる可能性があります。続行してもよろしいですか?」これは私がもっと頻繁にコミットするように促しましたが、破損は起きませんでした。
以下の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によるものでした。
mavenの更新 私のために働いた
プロジェクトを選択してから ALT + F5 を押し、プロジェクトを選択して[OK]をクリックします。
一般的な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
ここで、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.
変更後、エラーを解決する必要があります。それでもエラーが発生する場合は、プロジェクトを右クリック-> Maven->プロジェクトの更新
これは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に戻します。
完了しました。
私はweb.xmlの変更を正しいバージョン、xsdの場所、org.Eclipse.wst.common.project.facet.core.xmlの変更を正しいバージョンにして実行することで問題を解決しました。Maven Update。
バージョンの問題 - プロジェクトを右クリック - >プロパティ - >プロジェクトファセット - > Dynamic Web Moduleを右クリック - >ロック解除 - >チェック解除 - >バージョン2.5を選択 - >適用 - > mavenを更新