Cannot construct instance of `com..model.Reader` (no Creators, like default construct, exist)

在单元测试,传递json数据的时候,报这个错

 

D:\SOFT_SETUP\JAVA\JDK\bin\java.exe -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:52184,suspend=y,server=n -ea -Didea.test.cyclic.buffer.size=1048576 -javaagent:C:\Users\Administrator\.IntelliJIdea2018.3\system\captureAgent\debugger-agent.jar -Dfile.encoding=UTF-8 -classpath "D:\SOFT_SETUP\IDEA\IntelliJ IDEA 2018.3\lib\idea_rt.jar;D:\SOFT_SETUP\IDEA\IntelliJ IDEA 2018.3\plugins\junit\lib\junit-rt.jar;D:\SOFT_SETUP\IDEA\IntelliJ IDEA 2018.3\plugins\junit\lib\junit5-rt.jar;D:\SOFT_SETUP\JAVA\JDK\jre\lib\charsets.jar;D:\SOFT_SETUP\JAVA\JDK\jre\lib\deploy.jar;D:\SOFT_SETUP\JAVA\JDK\jre\lib\ext\access-bridge-64.jar;D:\SOFT_SETUP\JAVA\JDK\jre\lib\ext\cldrdata.jar;D:\SOFT_SETUP\JAVA\JDK\jre\lib\ext\dnsns.jar;D:\SOFT_SETUP\JAVA\JDK\jre\lib\ext\jaccess.jar;D:\SOFT_SETUP\JAVA\JDK\jre\lib\ext\jfxrt.jar;D:\SOFT_SETUP\JAVA\JDK\jre\lib\ext\localedata.jar;D:\SOFT_SETUP\JAVA\JDK\jre\lib\ext\nashorn.jar;D:\SOFT_SETUP\JAVA\JDK\jre\lib\ext\sunec.jar;D:\SOFT_SETUP\JAVA\JDK\jre\lib\ext\sunjce_provider.jar;D:\SOFT_SETUP\JAVA\JDK\jre\lib\ext\sunmscapi.jar;D:\SOFT_SETUP\JAVA\JDK\jre\lib\ext\sunpkcs11.jar;D:\SOFT_SETUP\JAVA\JDK\jre\lib\ext\zipfs.jar;D:\SOFT_SETUP\JAVA\JDK\jre\lib\javaws.jar;D:\SOFT_SETUP\JAVA\JDK\jre\lib\jce.jar;D:\SOFT_SETUP\JAVA\JDK\jre\lib\jfr.jar;D:\SOFT_SETUP\JAVA\JDK\jre\lib\jfxswt.jar;D:\SOFT_SETUP\JAVA\JDK\jre\lib\jsse.jar;D:\SOFT_SETUP\JAVA\JDK\jre\lib\management-agent.jar;D:\SOFT_SETUP\JAVA\JDK\jre\lib\plugin.jar;D:\SOFT_SETUP\JAVA\JDK\jre\lib\resources.jar;D:\SOFT_SETUP\JAVA\JDK\jre\lib\rt.jar;D:\11111111FILES\WORK\Learning Materials\JAVA\SpringBoot\spring boot  zimug\MYTEST\my-boot-launch\target\test-classes;D:\11111111FILES\WORK\Learning Materials\JAVA\SpringBoot\spring boot  zimug\MYTEST\my-boot-launch\target\classes;D:\SOFT_SETUP\MavenLocalRepository\org\springframework\boot\spring-boot-starter-web\2.1.7.RELEASE\spring-boot-starter-web-2.1.7.RELEASE.jar;D:\SOFT_SETUP\MavenLocalRepository\org\springframework\boot\spring-boot-starter\2.1.7.RELEASE\spring-boot-starter-2.1.7.RELEASE.jar;D:\SOFT_SETUP\MavenLocalRepository\org\springframework\boot\spring-boot-starter-logging\2.1.7.RELEASE\spring-boot-starter-logging-2.1.7.RELEASE.jar;D:\SOFT_SETUP\MavenLocalRepository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;D:\SOFT_SETUP\MavenLocalRepository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;D:\SOFT_SETUP\MavenLocalRepository\org\apache\logging\log4j\log4j-to-slf4j\2.11.2\log4j-to-slf4j-2.11.2.jar;D:\SOFT_SETUP\MavenLocalRepository\org\apache\logging\log4j\log4j-api\2.11.2\log4j-api-2.11.2.jar;D:\SOFT_SETUP\MavenLocalRepository\org\slf4j\jul-to-slf4j\1.7.26\jul-to-slf4j-1.7.26.jar;D:\SOFT_SETUP\MavenLocalRepository\javax\annotation\javax.annotation-api\1.3.2\javax.annotation-api-1.3.2.jar;D:\SOFT_SETUP\MavenLocalRepository\org\yaml\snakeyaml\1.23\snakeyaml-1.23.jar;D:\SOFT_SETUP\MavenLocalRepository\org\springframework\boot\spring-boot-starter-json\2.1.7.RELEASE\spring-boot-starter-json-2.1.7.RELEASE.jar;D:\SOFT_SETUP\MavenLocalRepository\com\fasterxml\jackson\core\jackson-databind\2.9.9\jackson-databind-2.9.9.jar;D:\SOFT_SETUP\MavenLocalRepository\com\fasterxml\jackson\core\jackson-annotations\2.9.0\jackson-annotations-2.9.0.jar;D:\SOFT_SETUP\MavenLocalRepository\com\fasterxml\jackson\core\jackson-core\2.9.9\jackson-core-2.9.9.jar;D:\SOFT_SETUP\MavenLocalRepository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.9.9\jackson-datatype-jdk8-2.9.9.jar;D:\SOFT_SETUP\MavenLocalRepository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.9.9\jackson-datatype-jsr310-2.9.9.jar;D:\SOFT_SETUP\MavenLocalRepository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.9.9\jackson-module-parameter-names-2.9.9.jar;D:\SOFT_SETUP\MavenLocalRepository\org\springframework\boot\spring-boot-starter-tomcat\2.1.7.RELEASE\spring-boot-starter-tomcat-2.1.7.RELEASE.jar;D:\SOFT_SETUP\MavenLocalRepository\org\apache\tomcat\embed\tomcat-embed-core\9.0.22\tomcat-embed-core-9.0.22.jar;D:\SOFT_SETUP\MavenLocalRepository\org\apache\tomcat\embed\tomcat-embed-el\9.0.22\tomcat-embed-el-9.0.22.jar;D:\SOFT_SETUP\MavenLocalRepository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.22\tomcat-embed-websocket-9.0.22.jar;D:\SOFT_SETUP\MavenLocalRepository\org\hibernate\validator\hibernate-validator\6.0.17.Final\hibernate-validator-6.0.17.Final.jar;D:\SOFT_SETUP\MavenLocalRepository\javax\validation\validation-api\2.0.1.Final\validation-api-2.0.1.Final.jar;D:\SOFT_SETUP\MavenLocalRepository\org\jboss\logging\jboss-logging\3.3.2.Final\jboss-logging-3.3.2.Final.jar;D:\SOFT_SETUP\MavenLocalRepository\com\fasterxml\classmate\1.4.0\classmate-1.4.0.jar;D:\SOFT_SETUP\MavenLocalRepository\org\springframework\spring-web\5.1.9.RELEASE\spring-web-5.1.9.RELEASE.jar;D:\SOFT_SETUP\MavenLocalRepository\org\springframework\spring-beans\5.1.9.RELEASE\spring-beans-5.1.9.RELEASE.jar;D:\SOFT_SETUP\MavenLocalRepository\org\springframework\spring-webmvc\5.1.9.RELEASE\spring-webmvc-5.1.9.RELEASE.jar;D:\SOFT_SETUP\MavenLocalRepository\org\springframework\spring-aop\5.1.9.RELEASE\spring-aop-5.1.9.RELEASE.jar;D:\SOFT_SETUP\MavenLocalRepository\org\springframework\spring-context\5.1.9.RELEASE\spring-context-5.1.9.RELEASE.jar;D:\SOFT_SETUP\MavenLocalRepository\org\springframework\spring-expression\5.1.9.RELEASE\spring-expression-5.1.9.RELEASE.jar;D:\SOFT_SETUP\MavenLocalRepository\org\springframework\boot\spring-boot-starter-test\2.1.7.RELEASE\spring-boot-starter-test-2.1.7.RELEASE.jar;D:\SOFT_SETUP\MavenLocalRepository\org\springframework\boot\spring-boot-test\2.1.7.RELEASE\spring-boot-test-2.1.7.RELEASE.jar;D:\SOFT_SETUP\MavenLocalRepository\org\springframework\boot\spring-boot-test-autoconfigure\2.1.7.RELEASE\spring-boot-test-autoconfigure-2.1.7.RELEASE.jar;D:\SOFT_SETUP\MavenLocalRepository\com\jayway\jsonpath\json-path\2.4.0\json-path-2.4.0.jar;D:\SOFT_SETUP\MavenLocalRepository\net\minidev\json-smart\2.3\json-smart-2.3.jar;D:\SOFT_SETUP\MavenLocalRepository\net\minidev\accessors-smart\1.2\accessors-smart-1.2.jar;D:\SOFT_SETUP\MavenLocalRepository\org\ow2\asm\asm\5.0.4\asm-5.0.4.jar;D:\SOFT_SETUP\MavenLocalRepository\org\slf4j\slf4j-api\1.7.26\slf4j-api-1.7.26.jar;D:\SOFT_SETUP\MavenLocalRepository\junit\junit\4.12\junit-4.12.jar;D:\SOFT_SETUP\MavenLocalRepository\org\assertj\assertj-core\3.11.1\assertj-core-3.11.1.jar;D:\SOFT_SETUP\MavenLocalRepository\org\mockito\mockito-core\2.23.4\mockito-core-2.23.4.jar;D:\SOFT_SETUP\MavenLocalRepository\net\bytebuddy\byte-buddy\1.9.16\byte-buddy-1.9.16.jar;D:\SOFT_SETUP\MavenLocalRepository\net\bytebuddy\byte-buddy-agent\1.9.16\byte-buddy-agent-1.9.16.jar;D:\SOFT_SETUP\MavenLocalRepository\org\objenesis\objenesis\2.6\objenesis-2.6.jar;D:\SOFT_SETUP\MavenLocalRepository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar;D:\SOFT_SETUP\MavenLocalRepository\org\hamcrest\hamcrest-library\1.3\hamcrest-library-1.3.jar;D:\SOFT_SETUP\MavenLocalRepository\org\skyscreamer\jsonassert\1.5.0\jsonassert-1.5.0.jar;D:\SOFT_SETUP\MavenLocalRepository\com\vaadin\external\google\android-json\0.0.20131108.vaadin1\android-json-0.0.20131108.vaadin1.jar;D:\SOFT_SETUP\MavenLocalRepository\org\springframework\spring-core\5.1.9.RELEASE\spring-core-5.1.9.RELEASE.jar;D:\SOFT_SETUP\MavenLocalRepository\org\springframework\spring-jcl\5.1.9.RELEASE\spring-jcl-5.1.9.RELEASE.jar;D:\SOFT_SETUP\MavenLocalRepository\org\springframework\spring-test\5.1.9.RELEASE\spring-test-5.1.9.RELEASE.jar;D:\SOFT_SETUP\MavenLocalRepository\org\xmlunit\xmlunit-core\2.6.3\xmlunit-core-2.6.3.jar;D:\SOFT_SETUP\MavenLocalRepository\org\springframework\boot\spring-boot-devtools\2.1.7.RELEASE\spring-boot-devtools-2.1.7.RELEASE.jar;D:\SOFT_SETUP\MavenLocalRepository\org\springframework\boot\spring-boot\2.1.7.RELEASE\spring-boot-2.1.7.RELEASE.jar;D:\SOFT_SETUP\MavenLocalRepository\org\springframework\boot\spring-boot-autoconfigure\2.1.7.RELEASE\spring-boot-autoconfigure-2.1.7.RELEASE.jar;D:\SOFT_SETUP\MavenLocalRepository\org\projectlombok\lombok\1.18.6\lombok-1.18.6.jar;D:\SOFT_SETUP\MavenLocalRepository\net\sf\json-lib\json-lib\2.4\json-lib-2.4-jdk15.jar;D:\SOFT_SETUP\MavenLocalRepository\commons-collections\commons-collections\3.2.1\commons-collections-3.2.1.jar;D:\SOFT_SETUP\MavenLocalRepository\commons-lang\commons-lang\2.5\commons-lang-2.5.jar;D:\SOFT_SETUP\MavenLocalRepository\commons-logging\commons-logging\1.1.1\commons-logging-1.1.1.jar;D:\SOFT_SETUP\MavenLocalRepository\commons-beanutils\commons-beanutils\1.9.4\commons-beanutils-1.9.4.jar;D:\SOFT_SETUP\MavenLocalRepository\org\apache\httpcomponents\httpclient\4.5.9\httpclient-4.5.9.jar;D:\SOFT_SETUP\MavenLocalRepository\org\apache\httpcomponents\httpcore\4.4.11\httpcore-4.4.11.jar;D:\SOFT_SETUP\MavenLocalRepository\commons-codec\commons-codec\1.11\commons-codec-1.11.jar;D:\SOFT_SETUP\MavenLocalRepository\org\apache\commons\commons-lang3\3.9\commons-lang3-3.9.jar;D:\SOFT_SETUP\MavenLocalRepository\net\sf\ezmorph\ezmorph\1.0.3\ezmorph-1.0.3.jar;D:\SOFT_SETUP\MavenLocalRepository\org\blancas\morph\0.3.0\morph-0.3.0.jar;D:\SOFT_SETUP\MavenLocalRepository\org\clojure\clojure\1.5.1\clojure-1.5.1.jar;D:\SOFT_SETUP\MavenLocalRepository\com\google\code\gson\gson\2.8.5\gson-2.8.5.jar" com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 -junit4 com.wangyue.mybootlaunch.ArticleRestControllerTest,saveArticle
Connected to the target VM, address: '127.0.0.1:52184', transport: 'socket'
10:59:35.806 [main] DEBUG org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - 4 mappings in 
10:59:36.341 [main] DEBUG org.jboss.logging - Logging Provider: org.jboss.logging.Log4j2LoggerProvider
10:59:36.342 [main] INFO org.hibernate.validator.internal.util.Version - HV000001: Hibernate Validator 6.0.17.Final
10:59:36.402 [main] DEBUG org.hibernate.validator.internal.engine.resolver.TraversableResolvers - Cannot find javax.persistence.Persistence on classpath. Assuming non JPA 2 environment. All properties will per default be traversable.
10:59:36.452 [main] DEBUG org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator - Loaded expression factory via original TCCL
10:59:36.452 [main] DEBUG org.hibernate.validator.internal.engine.ConfigurationImpl - Setting custom MessageInterpolator of type org.springframework.validation.beanvalidation.LocaleContextMessageInterpolator
10:59:36.453 [main] DEBUG org.hibernate.validator.internal.engine.ConfigurationImpl - Setting custom ParameterNameProvider of type org.springframework.validation.beanvalidation.LocalValidatorFactoryBean$1
10:59:36.458 [main] DEBUG org.hibernate.validator.internal.xml.config.ValidationXmlParser - Trying to load META-INF/validation.xml for XML based Validator configuration.
10:59:36.460 [main] DEBUG org.hibernate.validator.internal.xml.config.ResourceLoaderHelper - Trying to load META-INF/validation.xml via TCCL
10:59:36.460 [main] DEBUG org.hibernate.validator.internal.xml.config.ResourceLoaderHelper - Trying to load META-INF/validation.xml via Hibernate Validator's class loader
10:59:36.460 [main] DEBUG org.hibernate.validator.internal.xml.config.ValidationXmlParser - No META-INF/validation.xml found. Using annotation based configuration only.
10:59:36.673 [main] DEBUG org.hibernate.validator.internal.engine.ValidatorFactoryImpl - HV000234: Using org.springframework.validation.beanvalidation.LocaleContextMessageInterpolator as ValidatorFactory-scoped message interpolator.
10:59:36.673 [main] DEBUG org.hibernate.validator.internal.engine.ValidatorFactoryImpl - HV000234: Using org.hibernate.validator.internal.engine.resolver.TraverseAllTraversableResolver as ValidatorFactory-scoped traversable resolver.
10:59:36.673 [main] DEBUG org.hibernate.validator.internal.engine.ValidatorFactoryImpl - HV000234: Using org.hibernate.validator.internal.util.ExecutableParameterNameProvider as ValidatorFactory-scoped parameter name provider.
10:59:36.673 [main] DEBUG org.hibernate.validator.internal.engine.ValidatorFactoryImpl - HV000234: Using org.hibernate.validator.internal.engine.DefaultClockProvider as ValidatorFactory-scoped clock provider.
10:59:36.673 [main] DEBUG org.hibernate.validator.internal.engine.ValidatorFactoryImpl - HV000234: Using org.hibernate.validator.internal.engine.scripting.DefaultScriptEvaluatorFactory as ValidatorFactory-scoped script evaluator factory.
10:59:36.768 [main] DEBUG org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter - ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
10:59:36.894 [main] DEBUG org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver - ControllerAdvice beans: 0 @ExceptionHandler, 1 ResponseBodyAdvice
10:59:36.999 [main] INFO org.springframework.mock.web.MockServletContext - Initializing Spring TestDispatcherServlet ''
10:59:36.999 [main] INFO org.springframework.test.web.servlet.TestDispatcherServlet - Initializing Servlet ''
10:59:37.004 [main] DEBUG org.springframework.test.web.servlet.TestDispatcherServlet - Detected AcceptHeaderLocaleResolver
10:59:37.004 [main] DEBUG org.springframework.test.web.servlet.TestDispatcherServlet - Detected FixedThemeResolver
10:59:37.005 [main] DEBUG org.springframework.test.web.servlet.TestDispatcherServlet - Detected org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator@c68a5f8
10:59:37.005 [main] DEBUG org.springframework.test.web.servlet.TestDispatcherServlet - Detected org.springframework.web.servlet.support.SessionFlashMapManager@69c6161d
10:59:37.005 [main] DEBUG org.springframework.test.web.servlet.TestDispatcherServlet - enableLoggingRequestDetails='false': request parameters and headers will be masked to prevent unsafe logging of potentially sensitive data
10:59:37.005 [main] INFO org.springframework.test.web.servlet.TestDispatcherServlet - Completed initialization in 6 ms
10:59:37.108 [main] DEBUG org.springframework.test.web.servlet.TestDispatcherServlet - POST "/rest/article", parameters={}
10:59:37.123 [main] DEBUG org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Mapped to public com.wangyue.mybootlaunch.model.AjaxResponse com.wangyue.mybootlaunch.controller.ArticleRestController.saveArticle(com.wangyue.mybootlaunch.model.Article)
10:59:37.322 [main] DEBUG org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod - Could not resolve parameter [0] in public com.wangyue.mybootlaunch.model.AjaxResponse com.wangyue.mybootlaunch.controller.ArticleRestController.saveArticle(com.wangyue.mybootlaunch.model.Article): Type definition error: [simple type, class com.wangyue.mybootlaunch.model.Reader]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.wangyue.mybootlaunch.model.Reader` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
 at [Source: (PushbackInputStream); line: 7, column: 16] (through reference chain: com.wangyue.mybootlaunch.model.Article["reader"]->java.util.ArrayList[0])
10:59:37.326 [main] DEBUG org.springframework.test.web.servlet.TestDispatcherServlet - Failed to complete request: org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class com.wangyue.mybootlaunch.model.Reader]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.wangyue.mybootlaunch.model.Reader` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
 at [Source: (PushbackInputStream); line: 7, column: 16] (through reference chain: com.wangyue.mybootlaunch.model.Article["reader"]->java.util.ArrayList[0])

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class com.wangyue.mybootlaunch.model.Reader]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.wangyue.mybootlaunch.model.Reader` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
 at [Source: (PushbackInputStream); line: 7, column: 16] (through reference chain: com.wangyue.mybootlaunch.model.Article["reader"]->java.util.ArrayList[0])

	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1013)
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:908)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)
	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:71)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:166)
	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:133)
	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:182)
	at com.wangyue.mybootlaunch.ArticleRestControllerTest.saveArticle(ArticleRestControllerTest.java:53)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
	at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class com.wangyue.mybootlaunch.model.Reader]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.wangyue.mybootlaunch.model.Reader` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
 at [Source: (PushbackInputStream); line: 7, column: 16] (through reference chain: com.wangyue.mybootlaunch.model.Article["reader"]->java.util.ArrayList[0])
	at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:242)
	at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:227)
	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:204)
	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:157)
	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:130)
	at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:127)
	at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:167)
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:134)
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:892)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797)
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1039)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)
	... 32 more
Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.wangyue.mybootlaunch.model.Reader` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
 at [Source: (PushbackInputStream); line: 7, column: 16] (through reference chain: com.wangyue.mybootlaunch.model.Article["reader"]->java.util.ArrayList[0])
	at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:67)
	at com.fasterxml.jackson.databind.DeserializationContext.reportBadDefinition(DeserializationContext.java:1452)
	at com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1028)
	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1297)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:326)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:159)
	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:286)
	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:245)
	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:27)
	at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:369)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:159)
	at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4013)
	at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3084)
	at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:239)
	... 46 more

Disconnected from the target VM, address: '127.0.0.1:52184', transport: 'socket'

Process finished with exit code -1

 

 

 

Cannot construct instance of `com..model.Reader` (no Creators, like default construct, exist)_第1张图片

 

多了@Build,没有默认的无参构造函数了

当java bean 中使用@Builder的时,无法添加无参构造器

@Data
@Builder
public class Student {
    private Long id;
    private String name;
    private String teacherName;
    private String className;
    private String schoolName;
}

上面等价于

@Data
public class Student {
    private Long id;
    private String name;
    private String teacherName;
    private String className;
    private String schoolName;

    @Builder
    public Student(Long id, String name, String teacherName, String className, String schoolName) {
        this.id = id;
        this.name = name;
        this.teacherName = teacherName;
        this.className = className;
        this.schoolName = schoolName;
    }
}

@Builder注解修饰类时,该类将没有无参构造方法

对于如下这种需要json字符串转换为实体类的情况,将报错

String studentJson = "{\"id\": 122456,\"name\": \"张三\",\"teacherName\": \"李四\",\"className\": \"高一\",\"schoolName\": \"一中\"}";
//将会报错com.alibaba.fastjson.JSONException: default constructor not found
Student student = JSON.parseObject(studentJson, new TypeReference(){});
System.out.println(JSON.toJSONString(student));

 

解决办法如下

第一种方法:Student加连个注解@NoArgsConstructor和@AllArgsConstructor

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Student {
    private Long id;
    private String name;
    private String teacherName;
    private String className;
    private String schoolName;
}

 

第二种方法:

@Data
public class Student {
    private Long id;
    private String name;
    private String teacherName;
    private String className;
    private String schoolName;

    @Builder
    public Student() {
    }

    @Builder
    public Student(Long id, String name, String teacherName, String className, String schoolName) {
        this.id = id;
        this.name = name;
        this.teacherName = teacherName;
        this.className = className;
        this.schoolName = schoolName;
    }
}

 

 

 

 

你可能感兴趣的:(Java框架)