项目使用了spring boot+jersay构建resful项目,可是在打jar包的时候出现以下错误:java
主要缘由是:JerseyConfig类里面,经过package()函数来指定要扫描的包的路径的话,会致使找不到对应的路径.spring
解决方法:ide
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()));
}
}
其中红色部分为扫描的路径。函数