栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Spring Boot和Jersey产生ClassNotFound

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Boot和Jersey产生ClassNotFound

Jersey类路径扫描限制

可执行jar布局的更改意味着,Jersey的类路径扫描中的限制现在会影响可执行jar文件以及可执行war文件。要变通解决此问题,您希望由Jersey扫描的类应打包在jar中,并作为依赖项包含在BOOT-
INF / lib中。然后,应将Spring Boot启动器配置为在启动时解压缩这些jar,以便Jersey可以扫描其内容。

这是一个已知的问题,有一个开放的拉那不是合并尚未请求。我建议您参考此问题,其中提到一些解决方法。

解决方法很少

  1. 配置Boot的Maven插件以解压缩包含该软件包的jar

  2. 使用以下解决方法

jersey 1:import java.util.Map;import javax.annotation.PostConstruct;import javax.ws.rs.Path;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.ApplicationContext;import org.springframework.stereotype.Component;import com.sun.jersey.api.core.DefaultResourceConfig;@Componentpublic class RestApplication extends DefaultResourceConfig {    private static final Logger log = LoggerFactory.getLogger(RestApplication.class);    public RestApplication() {        getFeatures().put("com.sun.jersey.api.json.POJOMappingFeature", true);    }    @Autowired    ApplicationContext appCtx;    @PostConstruct    public void setup() {        log.info("Rest classes found:");        Map<String,Object> beans = appCtx.getBeansWithAnnotation(Path.class);        for (Object o : beans.values()) { log.info(" -> " + o.getClass().getName()); getSingletons().add(o);        }    }}and    @Autowired    RestApplication restApplication;    @Bean    public ServletRegistrationBean jersey() {        ServletRegistrationBean bean = new ServletRegistrationBean();        bean.setServlet(new ServletContainer(restApplication));        bean.addInitParameter("com.sun.jersey.api.json.POJOMappingFeature", "true");        bean.setUrlMappings(Arrays.asList("/rest/*"));        return bean;    }jersery2:import java.util.Map;import javax.annotation.PostConstruct;import javax.ws.rs.ApplicationPath;import javax.ws.rs.Path;import org.glassfish.jersey.server.ResourceConfig;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.ApplicationContext;import org.springframework.stereotype.Component;import com.sun.jersey.api.core.ResourceConfig;@Component@ApplicationPath("/rest")public class JerseyConfig extends ResourceConfig {    private static final Logger log = LoggerFactory.getLogger(JerseyConfig.class);    @Autowired    ApplicationContext appCtx;    @PostConstruct    public void setup() {        log.info("Rest classes found:");        Map<String,Object> beans = appCtx.getBeansWithAnnotation(Path.class);        for (Object o : beans.values()) { log.info(" -> " + o.getClass().getName()); register(o);        }    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/370250.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号