問題一: 缺少包jersey-media-multipart
且沒有保持版本一致
Servlet.init() for servlet [com.storageservice.config.JerseyConfig] threw exception
java.lang.NoClassDefFoundError: org/glassfish/jersey/server/internal/inject/AbstractValueFactoryProvider
出現上模的原因:SpringBoot沒有默認添加
jersey-media-multipart
依賴,僅定義了需要的版本,如果未引入這個包,將無法使用@FormDataParam註解和Multipart相關的類,無法對Multipart內容進行解析;JerseyConfig中需要註冊MultiPartFeature.class,否則會出現報錯,無法正確注入文件輸入流對象
加入對應版本的依賴,整合的maven
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>2.27</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.sun.jersey.contribs/jersey-multipart -->
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-multipart</artifactId>
<version>1.19.4</version>
</dependency>
注意:一定要保持版本一致
問題二:缺少MIMEParsingException
java.lang.NoClassDefFoundError: org/jvnet/mimepull/MIMEParsingException
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-multipart</artifactId>
<version>1.19.4</version>
</dependency>
目前最高版本爲1.19.4