2017-11-21 7 views
0

Gson을 사용하여 JsonObjects를 응답으로 보내려고합니다. 이러한 JsonObject는 objectMapper 또는 Gson 대신 수동으로 생성됩니다. Jackson과 관련된 모든 종속성을 제외 시켰습니다. 그것은 잘 작동합니다. 나중에 springfox를 사용하여 Swagger 문서를 추가하려고했습니다. 지금은 예외 아래 발생 :Jackson 대신 Jackson을 사용하도록 springfox를 구성하는 방법

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'objectMapperConfigurer' defined in springfox.documentation.spring.web.SpringfoxWebMvcConfiguration: Post-processing of merged bean definition failed; nested exception is java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ObjectMapper 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:526) ~[spring-beans-4.3.10.RELEASE.jar:4.3.10.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) ~[spring-beans-4.3.10.RELEASE.jar:4.3.10.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.10.RELEASE.jar:4.3.10.RELEASE] 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.10.RELEASE.jar:4.3.10.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.10.RELEASE.jar:4.3.10.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-4.3.10.RELEASE.jar:4.3.10.RELEASE] 
    at org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java:235) ~[spring-context-4.3.10.RELEASE.jar:4.3.10.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:703) ~[spring-context-4.3.10.RELEASE.jar:4.3.10.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:528) ~[spring-context-4.3.10.RELEASE.jar:4.3.10.RELEASE] 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.5.6.RELEASE.jar:1.5.6.RELEASE] 
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693) ~[spring-boot-1.5.6.RELEASE.jar:1.5.6.RELEASE] 
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360) ~[spring-boot-1.5.6.RELEASE.jar:1.5.6.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:303) ~[spring-boot-1.5.6.RELEASE.jar:1.5.6.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118) ~[spring-boot-1.5.6.RELEASE.jar:1.5.6.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107) ~[spring-boot-1.5.6.RELEASE.jar:1.5.6.RELEASE] 
    at com.honeywell.ldi.LdiDetailerApplication.main(LdiDetailerApplication.java:44) ~[classes/:na] 
Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ObjectMapper 
    at java.lang.Class.getDeclaredMethods0(Native Method) ~[na:1.8.0_151] 
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) ~[na:1.8.0_151] 
    at java.lang.Class.getDeclaredMethods(Class.java:1975) ~[na:1.8.0_151] 
    at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:613) ~[spring-core-4.3.10.RELEASE.jar:4.3.10.RELEASE] 
    at org.springframework.util.ReflectionUtils.doWithLocalMethods(ReflectionUtils.java:489) ~[spring-core-4.3.10.RELEASE.jar:4.3.10.RELEASE] 
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.buildLifecycleMetadata(InitDestroyAnnotationBeanPostProcessor.java:206) ~[spring-beans-4.3.10.RELEASE.jar:4.3.10.RELEASE] 
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.findLifecycleMetadata(InitDestroyAnnotationBeanPostProcessor.java:187) ~[spring-beans-4.3.10.RELEASE.jar:4.3.10.RELEASE] 
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessMergedBeanDefinition(InitDestroyAnnotationBeanPostProcessor.java:125) ~[spring-beans-4.3.10.RELEASE.jar:4.3.10.RELEASE] 
    at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessMergedBeanDefinition(CommonAnnotationBeanPostProcessor.java:295) ~[spring-context-4.3.10.RELEASE.jar:4.3.10.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyMergedBeanDefinitionPostProcessors(AbstractAutowireCapableBeanFactory.java:992) ~[spring-beans-4.3.10.RELEASE.jar:4.3.10.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:523) ~[spring-beans-4.3.10.RELEASE.jar:4.3.10.RELEASE] 
    ... 15 common frames omitted 
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.ObjectMapper 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[na:1.8.0_151] 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_151] 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) ~[na:1.8.0_151] 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_151] 
    ... 26 common frames omitted 
+0

가능한 중복 [springfox (swagger2가) GsonHttpMessageConverterConfig 작동하지 않습니다 (https://stackoverflow.com/questions/30219946/springfoxswagger2-does-not-work-with-gsonhttpmessageconverterconfig) –

답변

0

예외로 인해 springfox.documentation.spring.web.ObjectMapperConfigurercom.fasterxml.jackson.databind.ObjectMapper 누락에 대해 불평이다.

ObjectMappercom.fasterxml.jackson.core:jackson-databind:jar에 있습니다. Springfox로 응용 프로그램을 작동 시키려면 여전히 jackson-databind JAR이 필요합니다.

SpringFox는 Gson과 함께 작동하지 않습니다. Gson 개체를 사용하여 사용자 지정 serializers을 다른 Springfox 아티팩트에 등록해야합니다.

Gson gson = GsonBuilder() 
    // needed for making calls to /v2/api-docs 
    .registerTypeAdapter(Json.class, 
     new SpringfoxJsonSerializer()) 
    // rest are needed for making calls to /swagger-ui.html 
    .registerTypeAdapter(ApiListing.class, 
     new SpringfoxApiListingJsonSerializer()) 
    .registerTypeAdapter(SwaggerResource.class, 
     new SpringfoxResourceJsonSerializer()) 
    .registerTypeAdapter(ResourceListing.class, 
     new SpringfoxResourceListingJsonSerializer()) 
    .registerTypeAdapter(UiConfiguration.class, 
     new SpringfoxUiConfigurationJsonSerializer()) 
    // needed if you have security 
    .registerTypeAdapter(SecurityConfiguration.class, 
     new SpringfoxSecurityConfigurationJsonSerializer()) 
    ... 
    .create(); 

Here 봄 부팅, SpringFox 및 GSON로 동작하는 예제입니다. 의

+0

당신에게 인드라 BASAK 감사드립니다. 도움이됩니다. 나는 SpringfoxJsonSerializer()를 사용했고/v2/api-docs는 나를 위해 작동한다. 그러나 swagger-ui는 예상대로 나타나지 않을 것이고 리소스를 가져 오는 것을 계속 말합니다. GsonHttpMessageConverters 용 configureMessageConverters를 제거하면 API를 사용할 수 있지만 사용자 정의 생성 된 JsonOjects에서는 작동하지 않는다는 이상한 점을 발견했습니다. 이 일에 당신의 도움을 주셔서 감사합니다. – Divya

+0

UI를 작동 시키려면 나머지 JSON serializer가 필요합니다. 제가 언급 한 프로젝트를 확인하십시오. –

관련 문제