原因: 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>