Java 8.でWindows 10でEclipse Oxygen.2(4.7.2)を使用しています。Tomcatを使用してEclipse内で実行するファセットプロジェクトがあります。Tomcat8.5を使用していましたが、 Tomcat 9にアップグレードした新しいシステム。もちろん、Eclipse内でTomcat 8.5サーバーとサーバーランタイムを削除し、Tomcat 9サーバーランタイムを追加しました。
EclipseにTomcat 9サーバーを追加する前に、プロジェクトのプロジェクトファセットを確認しました。 Dynamic Web Moduleは「3.1」に設定されていましたが、現在は「4.0」が使用可能になっています。 「4.0」に変更し、これにより新しいAPIにアクセスできるようになると考えました。
次に、Tomcat 9サーバーを追加しようとしました。プロセス中、「追加および削除」で、どのプロジェクトを追加してサーバーに構成するかを尋ねられます。 Webプロジェクトを選択しましたが、Eclipseは「Tomcatバージョン9.0はJ2EE 1.2、1.3、1.4、およびJava EE 5、6、7、および8のWebモジュールのみをサポートします。
今私が知っている限り、それはまさに私が使用しているものです。しかし、私が変更したのは、ダイナミックWebモジュールだけでした。そこで、プロジェクト構成に戻り、「動的Webモジュール」を「3.1」に戻そうとしました。 Eclipseは私に言う:
プロジェクトファセットダイナミックWebモジュールのバージョンを3.1に変更できません。
ええと…だから私はそれを削除します。 「動的Webモジュール」の横にあるボックスのチェックを外したところ、Eclipseは次のように表示します。
Dynamic Web Module 4.0はアンインストールできません。
まあそれは魚の素晴らしいやかんです。明らかに動的Webモジュールのため、プロジェクトをTomcatにデプロイできません。ダイナミックWebモジュールを元の状態に戻すことはできません。私は何をしますか?問題はどこにありますか?
Eclipse Bug 530844 を開いて、この動作の何らかの理由が得られるかどうかを確認しました。
私はあなたと同じ環境で問題を再現しました。 4.0から3.1に回帰しようとすると、次のエラーが発生しました。
このブログは解決策を提供しました (ちょっとしたハックですが、動作します):
こちらもご覧くださいSO question: Dynamic Web Module 3.0-3.1
関連するいくつかの問題:
「Tomcatバージョン9.0はJ2EE 1.2、1.3、1.4、およびJava EE 5、6、7、および8 Webモジュール」。サーブレット4.0を使用するようにプロジェクトが構成されていますか?Mavenプロジェクトの場合、 POMにこの依存関係を追加 サーブレット4が必要でした。
Dynamic Web Moduleのバージョンを3.1に変更した後でも、私のWebアプリはバージョン4.0を使用し続けたため、そのファセットが何を達成するのかわかりません。
私の解決策は、このメッセージへの応答です。
Dynamic Web Module 4.0 cannot be uninstalled.
1-それで; Dynamic Web Moduleをアンインストールできない場合(「バージョンの変更」ではなく「アンインストール」を繰り返します)、プロジェクトディレクトリでファイルを最初に編集できます:.settings/org.Eclipse.wst.common.project.facet.core.xml
そして次の行を削除して手動でアンインストールします。
<installed facet="jst.web" version="4.0"/>
2-この後、動的Webモジュール4.0を使用する場合は、少なくとも同じファセット内でファセットJava 1.8を使用する.settings/org.Eclipse.wst.common.project.facet.core.xml
<installed facet="Java" version="1.8"/>
または、「Project Facets configuration」パネルで変更することもできます
3-問題が解決しない場合は、pomファイルを見て、Java version to 1.7、これらのプロパティがあるはずです。
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
Pomファイルを変更する場合は、必ずプロジェクトを更新してください。Maven> Update Projects
4-最後に、まだDynamic Web Module 4.0を使用できない場合は、WEB-INF\web.xml
ファイルは、次のような別の動的なWebバージョンの構成を持つことができます。
<?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"
xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee
http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
...
それ以外の場合は、サポートされているバージョンを手動で変更できます。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">
...
project Facets構成パネルに戻り、もう一度Dynamic Web Module 4.0を選択してみてください。動作するはずです
この助けを願っています。
私にとっては、pomファイルからこの依存関係を削除すると、この問題はなくなりました。私の場合、サーブレットを使用していないため、この依存関係は必要ありませんでした
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.0</version>
<scope>provided</scope>
</dependency>
それが役立つことを願って