1、集成jersey后访问接口报404
通过注解初始化jersey代码:
//@Component //@ApplicationPath("/webapi/*") public class AppResourceConfig extends ResourceConfig { public AppResourceConfig() { packages("com.zgl.springboot.rs"); register(MultiPartFeature.class); } }
修改为在Application后,可正常访问:
@Bean public ServletRegistrationBean jersetServlet(){ ServletRegistrationBean registration = new ServletRegistrationBean(new ServletContainer(), "/webapi/*"); // our rest resources will be available in the path /webapi/* registration.addInitParameter(ServletProperties.JAXRS_APPLICATION_CLASS, AppResourceConfig.class.getName()); return registration; }
该404错误是由于 AppResourceConfig类与应用启动类在同级目录,导致jersey初始化失败。
因此将AppResourceConfig类移到入口类SpringbootApplication的下一级包下即可。
原因分析:
比如SpringbootApplication所在包路径com.test。如果不配置扫描包注解@ComponentScan,则自动扫描入口类所在的同级包以及所有子目录下的类。如果配置了扫描包路径,则不会扫描应用入口类同级包下的类。
2、发布到独立tomcat时,报错
java.lang.NoSuchMethodError:org.springframework.boot.builder.SpringApplicationBuilder.<init>([Ljava/lang/Object;)V
原代码:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent>
修改后代码:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.14.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent>
3、发布到独立tomcat时,报错