Jackson annotation JsonFormat$Value json java.lang.NoSuchMet



我在gradle项目中使用com.fasterxml.jackson.core:jackson-annotations:2.6.0。自从将com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.6.0添加到我的项目构建文件中以来,我在运行gradle项目时一直遇到这个异常。这是我的错误的堆栈跟踪。

由以下原因引起:org.springframework.beans.BeanInstanceException:无法实例化[org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter]:构造函数引发异常;嵌套异常为java.lang.NoSuchMethodError:com.fasterxml.jackson.annotation.JsonFormat$Value.empty()Lcom/fasterxml/jackson/annotation/JsonFormat$Value;在org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:163)在org.springframework.beans.factory.support.SimpleInstantiationStrategy.instante(SimpleInstantiationStrategy.java:89)在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1098)…117更多原因:java.lang.NoSuchMethodError:com.fasterxml.jackson.annotation.JsonFormat$Value.empty()Lcom/fasterxml/jackson/annotation/JsonFormat$Value;在com.fasterxml.jackson.databind.cfg.MapperConfig.(MapperConfig.java:50)在com.fasterxml.jackson.databind.ObjectMapper.(ObjectMapper.java:535)在com.fasterxml.jackson.databind.ObjectMapper.(ObjectMapper.java:452)在org.springframework.http.coverter.json.Jackson2ObjectMapperBuilder.build(Jackson2OObjectMapperBuildr.java:553)在org.springframework.http.coverter.json.MappingJackson2HttpMessageConverter。(映射Jackson2HttpMessageConverter.java:57)在org.springframework.http.coverter.support.AllEncompassingFormHttpMessageConverter。(AllEncompassingFormHttpMessageConverter.java:61)在org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.(RequestMappingHandledAdapter.java:187)在sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native方法)sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessor Impl.java:62)在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessor Impl.java:45)位于java.lang.reflect.Constructure.newInstance(Constructor.java:422)在org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147)…119更多嵌套在org.springframework.beans.factory.BeanCreationException:错误使用名称创建bean"org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter":bean实例化失败;嵌套异常为org.springframework.beans.BeanInstanceException:未能实例化[org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter]:构造函数引发异常;嵌套异常为java.lang.NoSuchMethodError:com.fasterxml.jackson.annotation.JsonFormat$Value.empty()Lcom/fasterxml/jackson/annotation/JsonFormat$Value;:java.lang.NoSuchMethodError:com.fasterxml.jackson.annotation.JsonFormat$Value.empty()Lcom/fasterxml/jackson/annotation/JsonFormat$Value;在com.fasterxml.jackson.databind.cfg.MapperConfig.(MapperConfig.java:50)在com.fasterxml.jackson.databind.ObjectMapper.(ObjectMapper.java:535)在com.fasterxml.jackson.databind.ObjectMapper.(ObjectMapper.java:452)在org.springframework.http.coverter.json.Jackson2ObjectMapperBuilder.build(Jackson2OObjectMapperBuildr.java:553)在org.springframework.http.coverter.json.MappingJackson2HttpMessageConverter。(映射Jackson2HttpMessageConverter.java:57)在org.springframework.http.coverter.support.AllEncompassingFormHttpMessageConverter。(AllEncompassingFormHttpMessageConverter.java:61)在org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.(RequestMappingHandledAdapter.java:187)在sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native方法)sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessor Impl.java:62)在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessor Impl.java:45)位于java.lang.reflect.Constructure.newInstance(Constructor.java:422)在org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147)在org.springframework.beans.factory.support.SimpleInstantiationStrategy.instante(SimpleInstantiationStrategy.java:89)在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1098)在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1050)在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510)在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)在org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)在org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772)在org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839)在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538)在org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:446)在org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:328)在org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)在org.mortbay.japty.handler.ContextHandler.startContext(ContextHandler.java:548)网址:org.mortbay.jetty.servlet.Context.startContext(Context.java:136)在org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1272)在org.mortbay.japty.handler.ContextHandler.doStart(ContextHandler.java:517)在org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:489)在org.gradle.api.plugins.jetty.internal.JettyPluginWebAppContext.doStart(JettyPlugin.WebAppContext.java:112)在org.mortbay.component.AbstractLifeCycle.start(AbstractLife Cycle.java:50)在org.mortbay.japty.handler.HandlerCollection.doStart(HandlerCollection.java:152)在org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:156)在org.mortbay.component.AbstractLifeCycle.start(AbstractLife Cycle.java:50)在org.mortbay.japty.handler.HandlerCollection.doStart(HandlerCollection.java:152)在org.mortbay.component.AbstractLifeCycle.start(AbstractLife Cycle.java:50)在org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)网址:org.mortbay.jetty.Server.doStart(Server.java:224)org.mortbay.component.AbstractLifeCycle.start(AbstractLife Cycle.java:50)在org.gradle.api.plugins.jetty.internal.Jetty6PluginServer.start(Jetty6PluginServer.java:111)在org.gradle.api.plugins.jetty.AbstractJettyRunTask.startJettyInternal(AbstractJettyRunTask.java:238)在org.gradle.api.plugins.jetty.AbstractJettyRunTask.startJetty(AbstractJettyRunTask.java:191)在org.gradle.api.plugins.jetty.AbstractJettyRunTask.start(AbstractJettyRunTask.java:162)位于的sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)在java.lang.reflect.Method.ioke(Method.java:497)org.gradle.internal.reflect.JavaMethod.reinvoke(JavaMethod.java:75)org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationAccessingTaskFactory.java:227)在org.gradle.api.internal.project.taskfactory.AnnotationProgressingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:220)在org.gradle.api.internal.project.taskfactory.AnnotationProgressingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:209)在org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:585)在org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:568)在org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)在org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)在org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)在org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysis任务执行器.java:35)在org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUptoDateTaskExecutor.java:64)在org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)在org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmpitySourceFilesTaskexecuter.java:52)在org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecution.execute(SkipTaskWithNoActionsExecuter.java:52)在org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnyIfTaskexecuter.java:53)在org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)在org.gradle.expension.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203)在org.gradle.expension.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185)在org.gradle.execution.taskgraph.AbstractTaskPlanExecutior$TaskExecutiorWorker.processTask(AbstractTaskPlanExecutor.java:66)在org.gradle.execution.taskgraph.AbstractTaskPlanExecutior$TaskExecutiorWorker.run(AbstractTaskPlanExecutor.java:50)在org.gradle.execution.taskgraph.DefaultTaskPlanExecutiator.procle(DefaultTaskPlanExecutior.java:25)在org.gradle.expension.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110)在org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecution_Action.java:37)在org.grade.execution.DefaultBuildExecuter.execute(DefaultBuildExecutor.java:37)在org.grade.execution.DefaultBuildExecuter.access$000(DefaultBuildExecutor.java:23)在org.gradle.expension.DefaultBuildExecuter$1.prough(DefaultBuildExecuter.java:43)在org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildingExecutionAction.java:32)在org.grade.execution.DefaultBuildExecuter.execute(DefaultBuildExecutor.java:37)在org.grade.execution.DefaultBuildExecuter.execute(DefaultBuildExecutor.java:30)在org.gradle.sinitialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:154)网址:org.gradle.internal.Factories$1.create(Factories.java:22)org.grade.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)在org.grade.internal.progress.DefaultBuildOperationExecutior.run(DefaultBuildOperationExecutor.java:52)在org.gradle.sinitialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:151)在org.gradle.sinitialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32)在org.gradle.sinitialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:99)在org.gradle.sinitialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:93)在org.grade.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)在org.grade.internal.progress.DefaultBuildOperationExecutior.run(DefaultBuildOperationExecutor.java:62)在org.gradle.sinitialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:93)在org.gradle.sitialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:82)在org.gradle.selauncher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecutor.java:94)在org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:46)在org.gradle.selauncher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)在org.gradle.tooling.internal.provider.runner.SubscribebleBuildActionRunner.run(SubscribebleBuildactionRunner.java:58)在org.gradle.selauncher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)在org.gradle.selauncher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecutor.java:43)在org.gradle.selauncher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecutor.java:28)在org.gradle.selauncher.exec.ContinusBuildActionExecuter.execute(ContinuousBuildActionExecutor.java:75)在org.gradle.selauncher.exec.ContinusBuildActionExecuter.execute(ContinuousBuildActionExecutor.java:45)在org.gradle.selauncher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:52)在org.gradle.selauncher.daemon.server.exec.BuildCommandOnly.exexecute(BuildCommandOnly.java:36)在org.gradle.selauncher.daemon.server.api.DemonCommandExecution.proceed(DaemonCommentExecution.java:120)在org.gradle.selauncher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)在org.gradle.selauncher.daemon.server.api.DemonCommandExecution.proceed(DaemonCommentExecution.java:120)在org.gradle.selauncher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecactionLogger.java:26)在org.gradle.selauncher.daemon.server.api.DemonCommandExecution.proceed(DaemonCommentExecution.java:120)在org.gradle.selauncher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfsSingleUsed daemon.java:34)在org.gradle.selauncher.daemon.server.api.DemonCommandExecution.proceed(DaemonCommentExecution.java:120)在org.gradle.selauncher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)在org.gradle.selauncher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)网址:org.gradle.util.Swaper.swap(Swapper.java:38)org.gradle.selauncher.daemon.server.exec.ForwardClientInput.exexecute(ForwardClientInput.java:72)在org.gradle.selauncher.daemon.server.api.DemonCommandExecution.proceed(DaemonCommentExecution.java:120)在org.gradle.selauncher.daemon.server.health.DemonHealthTracker.execute(DaemonHealthTracker.java:47)在org.gradle.selauncher.daemon.server.api.DemonCommandExecution.proceed(DaemonCommentExecution.java:120)在org.gradle.selauncher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:66)在org.gradle.selauncher.daemon.server.exec.BuildCommandOnly.exexecute(BuildCommandOnly.java:36)在org.gradle.selauncher.daemon.server.api.DemonCommandExecution.proceed(DaemonCommentExecution.java:120)在org.gradle.selauncher.daemon.server.exec.EestablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72)在org.gradle.selauncher.daemon.server.exec.BuildCommandOnly.exexecute(BuildCommandOnly.java:36)在org.gradle.selauncher.daemon.server.api.DemonCommandExecution.proceed(DaemonCommentExecution.java:120)在org.gradle.selauncher.daemon.server.health.HindGCAfterBuild.exexecute(HintGCAfterBuild.java:41)在org.gradle.selauncher.daemon.server.api.DemonCommandExecution.proceed(DaemonCommentExecution.java:120)在org.gradle.selauncher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespandWithBusy.java:50)在org.gradle.selauncher.daemon.server.DemonStateCoordinator$1.run(DaemonStateCoordinator.java:246)在org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)在org.gradle.internal.concurrent.StoppableExecutiorImpl$1.run(StoppableExecutiorimpl.java:40)在java.util.concurrent.ThreadPoolExecutiator.runWorker(ThreadPoolExecutiator.java:1142)在java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)在java.lang.Thread.run(Thread.java:745)

我在课堂上使用了未使用的@JsonFormat。但我确实有JsonSerializerJsonDeserializer注释,它们使用两个类在UTC中将我的ZonedDateTime序列化到Json和从Json反序列化。我是第一次进行序列化和反序列化,所以请给出任何建议。

这是我的等级文件代码:

apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'jetty' apply plugin: 'maven' apply plugin: 'war'
ext {  springVersion = "4.2.4.RELEASE"  springSecurityVersion = "4.0.3.RELEASE" }
repositories {      mavenLocal()    mavenCentral()
/* maven {
url "http://repo.typesafe.com/typesafe/releases/"
} */ }
configurations.all {    exclude group: "commons-logging", module: "commons-logging"    exclude group: "log4j", module: "log4j" }
dependencies {    compile 'org.slf4j:jcl-over-slf4j:1.7.12'    compile 'ch.qos.logback:logback-classic:1.1.3'    compile "org.springframework:spring-core:$springVersion"    compile "org.springframework:spring-context:$springVersion"
compile ("org.springframework:spring-web:$springVersion"){
exclude group: "com.fasterxml.jackson.core"    }    compile ("org.springframework:spring-webmvc:$springVersion"){
exclude group: "com.fasterxml.jackson.core"    }    compile "org.springframework:spring-orm:$springVersion"    compile "org.springframework.security:spring-security-web:$springSecurityVersion" compile "org.springframework.security:spring-security-config:$springSecurityVersion"
compile "org.aspectj:aspectjrt:1.7.4"
compile "org.hibernate:hibernate-core:4.3.6.Final"        compile "org.hibernate:hibernate-entitymanager:4.3.6.Final"    compile "javax.servlet:javax.servlet-api:3.1.0"    compile "org.javassist:javassist:3.15.0-GA"    compile "mysql:mysql-connector-java:5.1.31"
compile "org.hsqldb:hsqldb:2.3.2"
compile "commons-dbcp:commons-dbcp:1.2.2"    compile "org.apache.commons:commons-lang3:3.4"      compile 'com.fasterxml.jackson.core:jackson-annotations:2.7.0'    compile 'com.fasterxml.jackson.core:jackson-core:2.7.0'    compile 'com.fasterxml.jackson.core:jackson-databind:2.7.0'    compile 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.7.0'
compile "net.sf.ehcache:ehcache-core:2.6.9"    compile "org.hibernate:hibernate-ehcache:4.3.5.Final"    compile "com.h2database:h2:1.4.177"    compile "com.google.code.gson:gson:2.6.2" 
testCompile ("junit:junit:4.12"){
exclude group: "org.hamcrest"    }    testCompile "org.springframework:spring-test:$springVersion"    testCompile "org.easetech:easytest-core:1.4.0"    testCompile "org.mockito:mockito-core:1.9.5"    testCompile "org.hamcrest:hamcrest-all:1.3"    testCompile "com.jayway.jsonpath:json-path:2.2.0"    testCompile "com.jayway.jsonpath:json-path-assert:2.2.0"
testRuntime "org.hsqldb:hsqldb:2.3.2"  }

检查您的项目依赖关系。您可能正在使用不兼容的库版本。2.7版本有empty()方法,而2.6版本没有。

http://fasterxml.github.io/jackson-annotations/javadoc/2.6/com/fasterxml/jackson/annotation/JsonFormat.Value.html

http://fasterxml.github.io/jackson-annotations/javadoc/2.7.0-rc1/com/fasterxml/jackson/annotation/JsonFormat.Value.html

尝试升级到2.7版本。

我在尝试运行task-gradle-clean时解决了问题。我认为一些旧的项目依赖关系一直存在到现在。这只是一个清理项目的问题。该项目现在运行良好。:)

这是@BeñatBermejo和@AkashRaveendran已经给出的解决方案的替代方案。我很高兴阿卡什仅仅通过清理环境就能让他的系统正常工作,但我发现这对我来说还不够。

这个错误来自jackson数据绑定,我在我的pom 2.8.1版本中有这个数据绑定。然而,由于我也涉及Spring,所以jackson数据绑定依赖项,即jackson核心,仍然是2.6.6版本。

我所要做的就是删除jackson数据绑定依赖项中的版本说明符。当我这样做的时候,Maven使用了Spring命名的版本2.6.6,它不包括对JsonFormat$Value.empty().的调用

如果您需要一些jackson 2.7+功能,您可以尝试指定更高版本的jackson核心以及您尝试使用的jacksonartifact的任何其他依赖项。

然而,在涉及Spring的情况下,我想看看您是否可以使用它所命名的较低的jackson版本,或者看看Spring是否已经发布了一个包含较新jackson库的新版本。重写Spring的依赖关系结构首先破坏了使用Spring的最大原因之一:您可以立即获得一组经过充分测试的相互关联的依赖关系。

从.m2目录中删除所有jackson文件,确保您的所有jackson-pom,即数据绑定、注释等具有相同的版本。如果需要,请降级您的版本,即jackson 2.7.3运行良好,而不是2.10.3

相关内容

最新更新