原因: java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory


Error assembling WAR: webxml attribute is required
Caused by: java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory

問題の説明

SpringMVCの学習の過程で、完全なアノテーション開発、設定ファイルのアップロードおよびダウンロードクラスを使用すると、このようなエラーが発生します

原因分析と解決策

1.Caused by: java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory

示されている問題は、私が構成した WebConfig クラスでファイル アップロード パーサーが構成されている場所です。

//配置文件上传解析器
    @Bean
    public CommonsMultipartResolver multipartResolver(){
    
    
        CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver();
        return commonsMultipartResolver;
    }

まず、この問題は、pom.xml ファイル内で、確かに commons-fileupload の設定に関連しているため、これを追加した後、リロードします。

<!--添加fileupload依赖-->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.3</version>
        </dependency>

2.Error assembling WAR: webxml attribute is required

最初のステップを解決した後、再びこの問題が発生しました。pom を追加したためではないかと思いました。

それで、再パッケージ化するつもりですが、いいえ、web.xml ファイルがまったくありません。war
プロジェクトをパッケージ化するには、web.xml ファイルを参照する必要があります。ファイルがない場合は、エラーが発生します。 web.xml ファイルのパスは次のように構成できます。

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-war-plugin</artifactId>
   <configuration>
      <webXml>webapps\WEB-INF\web.xml</webXml>
   </configuration>
</plugin>

私は開発にアノテーションを使用し、構成クラス (web.xml、SpringMVC.xml) の代わりにアノテーション クラスを使用するため、pom.xml でプラグイン構成を使用する必要があります。

<build>
       <plugins>
           <plugin>
               <artifactId>maven-war-plugin</artifactId>
               <version>3.2.2</version>
           </plugin>
       </plugins>
    </build>

おすすめ

転載: blog.csdn.net/qq_41704415/article/details/125473307