web-dev-qa-db-ja.com

動的Webモジュール3.0-3.1

私はmavenizedコードベースで設定されたSpring 3.2.4 Webアプリを持っています。 Maven/pom.xmlでアプリを最初にビルドすると、web.xmlが見つからないというエラーが表示されました。最初に空のweb.xmlを作成しようとしました。これは、プロジェクトのファセットが変更された瞬間でした(そしてその理由はわかりません)。動的Webモジュール3.0から3.1に切り替えましたが、これは元に戻せません。 Dynamic Web Modules 3.0に再度変更するにはどうすればよいですか?

enter image description here

さらに、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>
48
du-it

Eclipseでも同様のトラブルがありましたが、それを修正する唯一の方法は

  • Webモジュールを削除する
  • 適用する
  • モジュールのバージョンを変更する
  • モジュールを追加する
  • 構成(ダイアログの下部にあるさらに構成可能なリンク)
  • 適用する

デフォルトで/ WebContent /でWebファイルを検索するように、Webモジュールを適用する前にWebモジュールを設定してください。これはMavenプロジェクトの構造とは異なります。

編集

他に何も役に立たない場合の2番目の方法

  • Eclipseを終了し、ファイルシステムのプロジェクトに移動してから、.settingsフォルダーに移動します。
  • org.Eclipse.wst.common.project.facet.core.xmlバックアップの作成を開き、Webモジュールのエントリを削除します。
  • ここでWebモジュールのバージョンを変更することもできますが、保証はありません。
70
dimoniy

バージョン3.1を使用する場合は、次のスキーマを使用する必要があります。

  • http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd

3.0と3.1は異なることに注意してください。3.1ではSunについて言及されていないため、単に3_0.xsd3_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>
61
Alexey Grigorev

同じ問題が発生したため、org.Eclipse.wst.common.project.facet.core.xmlを編集してこれを修正しました。

このファイルでは、次の行を変更できました

<installed facet="jst.web" version="3.1"/>

戻る

<installed facet="jst.web" version="3.0"/>

これで問題は解決したようです。

9
Nlp Trinh

Win7、Tomcat7、Mavenプロジェクトを有効にしたEclipse MarsでMaven-Pomをセットアップして実行していました。稼働していないサーバーでは、この画面で3.1から3.0に変更するだけでした: enter image description here

私にとって、ダイナミックWebモジュールを無効にすることが重要でした!次に、バージョンを変更してから、動的Webモジュールを再度有効にします。

3
Dirk Schumacher

Eclipseプロジェクトのプロパティを開き、Project Facetsで[動的Webモジュール]の選択を解除します... [OK]をクリックしますMaven->プロジェクトの更新

2
CamelTM

特定のケースでは、問題は動的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スタートアップにプロジェクトを手動で追加しました(右クリック+追加および削除)。プロジェクトをクリックし、[サーバーで実行...]を選択しました。すべて問題ありませんでした。

0
Afshin Ghazi

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>  
0
Long Tran