问题一: 缺少包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