Весенняя загрузка /swagger-ресурсы и /v2/api-документы работают, но ошибка swagger-ui 404

#java #spring #spring-boot #swagger #swagger-ui

Вопрос:

https://localhost:9444/swagger-ui 404 ошибка

https://localhost:9444/swagger-resources и https://localhost:9444/v2/api-docs работает без проблем, поэтому я знаю, что он распознает чванство, но при попытке запустить он возвращает ошибку 404 https://localhost:9444/swagger-ui

Вот код из my pom.xml

 lt;dependencygt;  lt;groupIdgt;io.springfoxlt;/groupIdgt;  lt;artifactIdgt;springfox-swagger-uilt;/artifactIdgt;  lt;versiongt;2.9.2lt;/versiongt;  lt;/dependencygt;   lt;dependencygt;  lt;groupIdgt;io.springfoxlt;/groupIdgt;  lt;artifactIdgt;springfox-swagger2lt;/artifactIdgt;  lt;versiongt;2.9.2lt;/versiongt;  lt;/dependencygt;    lt;dependencygt;  lt;groupIdgt;io.springfoxlt;/groupIdgt;  lt;artifactIdgt;springfox-schemalt;/artifactIdgt;  lt;versiongt;2.9.2lt;/versiongt;  lt;/dependencygt;  

А вот код из my IDAAApiApplication.java файла

 package com.ibm.idaa.adminfoundation;  import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.web.socket.config.annotation.EnableWebSocket; import springfox.documentation.swagger2.annotations.EnableSwagger2;   @Configuration @SpringBootApplication @EnableSwagger2 @EnableAutoConfiguration(exclude={MongoAutoConfiguration.class}) @EnableAsync @EnableScheduling @EnableWebSocket @Slf4j public class IDAAApiApplication extends SpringBootServletInitializer {   @Autowired  private Environment env;  // @Value("${encryption.mode}")  private String encryptionMode="base64";   public static void main(String[] args) {  new SpringApplicationBuilder(IDAAApiApplication.class)  .sources(IDAAApiApplication.class)  .run(args);  }   @Override  protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {  return application.sources(IDAAApiApplication.class);  }  

И вот my swaggerConfig.java

 package com.ibm.idaa.adminfoundation.configuration;   import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.Contact; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2;   @Configuration @EnableSwagger2 public class SwaggerConfig { // @Value("${spring.profiles.active}")  private String evn="dev";   @Bean  public Docket buildDocket() {  //not display swagger api doc in prod env  if ("prod".equals(evn)) {  return new Docket(DocumentationType.SWAGGER_2)  .apiInfo(displayBlank())  .select()  .paths(PathSelectors.none())  .build();  }  return new Docket(DocumentationType.SWAGGER_2)  .apiInfo(buildApiInfo())  .select()  //packages you want to be scanned by swagger  .apis(RequestHandlerSelectors.basePackage("com.ibm.idaa.adminfoundation.rest.controller"))  .paths(PathSelectors.any())  .build();  }   private ApiInfo buildApiInfo() {  return new ApiInfoBuilder()  .title("Acceleration API's for IDAA Services")  .contact(new Contact("Tyler Condon", "", ""))  .version("1.0")  .build();  }   /**  * display blank page  *  * @return  */  private ApiInfo displayBlank() {  return new ApiInfoBuilder()  .title("")  .description("")  .license("")  .licenseUrl("")  .termsOfServiceUrl("")  .version("")  .contact(new Contact("", "", ""))  .build();  } }  

Вот вывод, который я получаю в своей консоли, когда пытаюсь запустить :

 21/11/02 09:46:35 INFO [Default Executor-thread-186] org.springframework.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 21/11/02 09:46:35 DEBUG [Default Executor-thread-186] org.springframework.web.servlet.DispatcherServlet : Detected StandardServletMultipartResolver 21/11/02 09:46:35 DEBUG [Default Executor-thread-186] org.springframework.web.servlet.DispatcherServlet : enableLoggingRequestDetails='false': request parameters and headers will be masked to prevent unsafe logging of potentially sensitive data 21/11/02 09:46:35 INFO [Default Executor-thread-186] org.springframework.web.servlet.DispatcherServlet : Completed initialization in 27 ms 21/11/02 09:46:35 DEBUG [Default Executor-thread-186] org.springframework.web.servlet.DispatcherServlet : GET "/swagger-ui/", parameters={} 21/11/02 09:46:35 WARN [Default Executor-thread-186] org.springframework.web.servlet.PageNotFound : No mapping for GET /swagger-ui/ 21/11/02 09:46:35 DEBUG [Default Executor-thread-186] org.springframework.web.servlet.DispatcherServlet : Completed 404 NOT_FOUND 21/11/02 09:46:35 ERROR [Default Executor-thread-186] org.springframework.boot.web.servlet.support.ErrorPageFilter : Cannot forward to error page for request [/swagger-ui/] as the response has already been committed. As a result, the response may have the wrong status code. If your application is running on WebSphere Application Server you may be able to resolve this problem by setting com.ibm.ws.webcontainer.invokeFlushAfterService to false  

Примечание : я пробовал с завершающей косой чертой и без нее и получил тот же результат.

Кто-то предложил мне использовать yaml. Ни один из онлайн-гидов об этом не упоминал?

Комментарии:

1. С этим: swagger-ui/index.html работает ?

2. Я тоже пытался это сделать, но безуспешно

3. Я вижу, что вы используете схему https для локального хоста, попробуйте перейти на http, И если вы используете swagger 3.0, URL-адрес должен заканчиваться http://localhost:9444/swagger-ui/ косой чертой «/»

4. Я попробовал это с помощью косой черты и все равно получаю тот же результат. Есть ли причина, по которой https не работает для swagger?

5. Кроме того, я пытаюсь запустить это на сервере Liberty, я не знаю, имеет ли это какое-либо значение?