当前位置: 首页 > 知识库问答 >
问题:

炫耀核心球衣 2.X 与资源配置

山阳辉
2023-03-14

我正试图在我的申请中加入炫耀。

我正在遵循这个指南https://github . com/Swagger-API/Swagger-Core/wiki/Swagger-Core-Jersey-2。x-Project-Setup-1.5 #使用-a-custom-application-subclass

但我将Jersey配置为ResourceConfig,如下所示:

    @ApplicationPath("/resources/api")
     public class ApiApplication extends ResourceConfig {

    public ApiApplication() {
        super(MultiPartFeature.class);
        packages("my.rest.resources");
        register(io.swagger.jaxrs.listing.ApiListingResource.class);
        register(io.swagger.jaxrs.listing.SwaggerSerializers.class);

        BeanConfig beanConfig = new BeanConfig();
        beanConfig.setVersion("1.0.2");
        beanConfig.setSchemes(new String[]{"http"});
        beanConfig.setHost("localhost:8080");
        beanConfig.setBasePath("/resources/api");
        beanConfig.setResourcePackage("my.rest.resources");
        beanConfig.setScan(true);
    }
  }

这是正确的吗?

没有昂首阔步。json生成。

根据我的理解,swagger文件应该在下面的链接上 http://localhost/api/api-docs/swagger.json

已将BasePath更改为resources/api

我在tomcat日志中也收到以下异常:

    SEVERE: Servlet /XXXXXX threw load() exception
java.lang.NoSuchMethodError: org.reflections.util.ClasspathHelper.forPackage(Ljava/lang/String;[Ljava/lang/ClassLoader;)Ljava/util/Collection;
    at io.swagger.jaxrs.config.BeanConfig.classes(BeanConfig.java:189)
    at io.swagger.jaxrs.config.BeanConfig.setScan(BeanConfig.java:168)
    at my.rest.resources.apps.ApiApplication.<init>(ApiApplication.java:34)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

共有2个答案

华萧迟
2023-03-14

java.lang.NoSuchMethodError:org.reflections.util.ClasspathHelper.forPackage(Ljava/lang/String;[Ljava/lang/ClassLoader;)Ljava/util/Collection;在io.swagger.jaxrs.config.BeanConfig.classes(BeanConfig.java:189)在io.swagger.jaxrs.config.BeanConfig.setScan(BeanConfig.java:168)在my.rest.resources.apps.ApiApplication.(ApiApplication.java:34)在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)

通过上述堆栈跟踪,观察到如下情况:

实际上,您使用的是Jersey1. x支持的jar,即reflections-0.9.9-RC1.jar,因此请将泽西2. x支持的jarreflections-0.9.9.jar添加到您的libs文件夹或类路径中。这将解决上述问题

贺飞星
2023-03-14

>

  • ApiListingResource(swagger数据的来源)只不过是另一个JAX-RS(Jersey)资源类。

    @Path("/")
    public class ApiListingResource {
        ...
        @GET
        ...
        @Path("/swagger.{type:json|yaml}")
        public Response getListing(..) {...}
        ...
    }
    

    因此,资源路径将是基本@ApplicationPath(“/资源/api”)和变量资源路径 /swagger.json。因此,您需要访问 /resources/api/swagger.json

    您需要在BeanConfig中修复您的基本路径。此基本路径用于为swagger UI创建URL。使用基本路径"/api"意味着URL数据将导致UI访问不存在的/api/your Resources。基本路径应该是servlet上下文(我猜在您的情况下没有)和泽西基本路径(即/Resources/api)的组合。因此将BeanConfig基本路径设置为"/Resources/api"

  •  类似资料:
    • 我正在使用Swagger和泽西岛1。它生成斯瓦格规格 v1.2 中的规范。大多数工具(例如编辑器)都需要规范v2.0。有没有办法生成规范v2.0? 我实际上想要像bootprint swagger这样的可打印/静态文档,这也需要规范v2.0。

    • 我正在寻找一种方法来覆盖GuiceServletContextListener中与guice绑定的jersey资源。我的代码,我正在努力工作: 但不幸的是,这不起作用,虽然我不能像接口一样将jersey资源绑定到实现,但只有work。但是这样的绑定是不可能覆盖的。如果我试图用覆盖,我会收到一个错误而@Path应该是唯一的。那么我的用例有什么解决方案吗?

    • 我有一个运行spring-boot、jersey2和spring度量的应用程序:下面是maven片段: 在引入致动器依赖性之前,Jersey一直工作得很好。然后创建了以下bean以使Jersey作为过滤器工作: 度量被映射到/admin路径。使用这种配置,我无法使度量标准工作。但是,通过添加management.port(不同于主应用程序端口),既可以使用Jersey资源,也可以使用metrics

    • 我使用Jersey 2.10异常映射器类来处理异常。我想返回错误状态和错误信息的JSON正文。我想得到类似的回应: Jersey没有在响应中发送JSON正文。我得到的是: 如果我将状态代码更改为200,那么我将获得预期的响应正文 请帮我找出这个问题的解决方案。 异常映射器在错误对象中填充错误消息和状态。以下是异常映射程序代码: 这是来自错误对象的代码:

    • 主要内容:1.kubernetes 架构,2.从创建 deployment 开始,3.Pod,3.容器编排,4.水平扩缩容,5.更新/回滚,6.滚动更新,7.kubernetes 中的网络,8.微服务—service,9.kubernetes 中的服务发现与网络调用kubernetes 已经成为容器编排领域的王者,它是基于容器的集群编排引擎,具备扩展集群、滚动升级回滚、弹性伸缩、自动治愈、服务发现等多种特性能力。 1.kubernetes 架构 从宏观上来看 kubernetes 的整体架构,包

    • Resource Planet 是一款点击、放置、收集资源的游戏。 点击试玩 https://static.oschina.net/trytry/resource-planet/