私はmavenizedコードベースで設定されたSpring 3.2.4 Webアプリを持っています。 Maven/pom.xmlでアプリを最初にビルドすると、web.xmlが見つからないというエラーが表示されました。最初に空のweb.xmlを作成しようとしました。これは、プロジェクトのファセットが変更された瞬間でした(そしてその理由はわかりません)。動的Webモジュール3.0から3.1に切り替えましたが、これは元に戻せません。 Dynamic Web Modules 3.0に再度変更するにはどうすればよいですか?
さらに、JAX-RSを削除できません。これを試してみると:
Failed while uninstalling JAX-RS (REST Web Services) 1.0.
org.Eclipse.jst.javaee.web.internal.impl.WebAppImpl cannot be cast to org.Eclipse.jst.j2ee.webapplication.WebApp
後で、対応するプラグインをpom.xmlに挿入することで、Mavenのコンパイルエラーを回避できることがわかりました。
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
Eclipseでも同様のトラブルがありましたが、それを修正する唯一の方法は
デフォルトで/ WebContent /でWebファイルを検索するように、Webモジュールを適用する前にWebモジュールを設定してください。これはMavenプロジェクトの構造とは異なります。
編集:
他に何も役に立たない場合の2番目の方法
org.Eclipse.wst.common.project.facet.core.xml
、バックアップの作成を開き、Webモジュールのエントリを削除します。バージョン3.1を使用する場合は、次のスキーマを使用する必要があります。
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd
3.0と3.1は異なることに注意してください。3.1ではSunについて言及されていないため、単に3_0.xsd
を3_1.xsd
に変更しても機能しません。
次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:web="http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee">
</web-app>
また、pom.xml
の最新バージョンに依存していることを確認してください。あれは、
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
...
</configuration>
</plugin>
そして
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
最後に、Java 7または8でコンパイルする必要があります。
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
同じ問題が発生したため、org.Eclipse.wst.common.project.facet.core.xmlを編集してこれを修正しました。
このファイルでは、次の行を変更できました
<installed facet="jst.web" version="3.1"/>
戻る
<installed facet="jst.web" version="3.0"/>
これで問題は解決したようです。
Eclipseプロジェクトのプロパティを開き、Project Facetsで[動的Webモジュール]の選択を解除します... [OK]をクリックしますMaven->プロジェクトの更新
特定のケースでは、問題は動的Webアプリ用にリリースされ、ver.2.5にファセットされたmaven-archetype-webappが原因で(生成されたweb.xmlおよび関連するxsdを参照)、Eclipseに関連しています。プロジェクトファセットを動的webapp> 2.5に変更しようとすると、srcフォルダー構造は構文的に変更されます(2.5は3.1とは異なります)が、物理的には変更されません。
これが、変更に適用した場合にNULLポインター例外に直面する理由です。
これを解決するには、プロジェクトファセット構成からデフォルト構成を設定する必要があります。変更を適用してから、Javaビルドパスに移動して、/ srcフォルダーを削除し、少なくとも/ src/main/Javaフォルダーを作成する必要があります(/ src/main/resourcesおよび/ srcも必要です)/test/Javaに準拠する)必要な構成(3.0、3.1)に再変更してから適用します。
プロジェクトorg.Eclipse.wst.common.project.facet.core.xmlを開き、最初に変更し、Webモジュールタグのある行を削除しました。プロジェクトをクリーンアップし、毎回Tomcatで起動しましたが、それでも実行されませんでした。 (元のままの)行を返し、プロジェクトをクリーニングしました。 EclipseでTomcat設定を開き、Tomcatスタートアップにプロジェクトを手動で追加しました(右クリック+追加および削除)。プロジェクトをクリックし、[サーバーで実行...]を選択しました。すべて問題ありませんでした。
1)プロジェクトに移動して、「。settings」ディレクトリを探します this one
2)次の名前のファイルxmlを開きます。
org.Eclipse.wst.common.project.facet.core.xml
3)
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<fixed facet="wst.jsdt.web"/>
<installed facet="Java" version="1.5"/>
<installed facet="jst.web" version="2.3"/>
<installed facet="wst.jsdt.web" version="1.0"/>
</faceted-project>
Jst.webバージョンを3.0に変更し、Javaバージョンを1.7または1.8に変更します(jdkバージョンを使用している現在のベース)
4)web.xml
ディレクトリの下のWEB-INF
ファイルを変更します。次の記事を参照してください。
https://www.mkyong.com/web-development/the-web-xml-deployment-descriptor-examples/
5)pom.xml
ファイルに移動し、次の行を貼り付けます。
<build>
<finalName>YOUR_PROJECT_NAME</finalName>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source> THIS IS YOUR USING JDK's VERSION
<target>1.8</target> SAME AS ABOVE
</configuration>
</plugin>
</plugins>
</build>