spring boot+jersay打jar包时出错的解决方法

项目使用了spring boot+jersay构建resful项目,但是在打jar包的时候出现如下错误:

主要原因是:JerseyConfig类里面,通过package()函数来指定要扫描的包的路径的话,会导致找不到对应的路径.

解决方法:

mport org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.server.spring.scope.RequestContextFilter;
import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider;
import org.springframework.core.type.filter.AnnotationTypeFilter;
import org.springframework.stereotype.Component;
import org.springframework.util.ClassUtils;

import javax.ws.rs.Path;
import javax.ws.rs.ext.Provider;
import java.util.stream.Collectors;

/**
 * Jersey配置类
 * @author Walter Wong
 */
@Component
public class JerseyConfig extends ResourceConfig {
    /**
     * 扫描com.makeronly包,使其识别JAX-RS注解
     */
    public JerseyConfig() {
        register(RequestContextFilter.class);
        //packages("com.makeronly");
        ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(false);
        scanner.addIncludeFilter(new AnnotationTypeFilter(Path.class));
        scanner.addIncludeFilter(new AnnotationTypeFilter(Provider.class));
        this.registerClasses(scanner.findCandidateComponents("com.makeronly").stream()
                .map(beanDefinition -> ClassUtils
                        .resolveClassName(beanDefinition.getBeanClassName(), this.getClassLoader()))
                .collect(Collectors.toSet()));
    }
}

其中红色部分为扫描的路径。

猜你喜欢

转载自my.oschina.net/u/3295928/blog/1635775
今日推荐