Проблема десериализации Джексона с опцией компилятора -parameterJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Проблема десериализации Джексона с опцией компилятора -parameter

Сообщение Anonymous »

Я работаю над обновлением своего проекта Java Spring до jdk 17, Spring 6. Я получил некоторую ошибку. Причина: org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$AmbigiousBindingException: все еще 2 несвязанных аргумента в this()/target( )/args() этап привязки, без возможности определить между ними
Чтобы это исправить, добавлено

Код: Выделить всё

tasks.withType(JavaCompile).configureEach {
options.compilerArgs.add("-parameters")
}
в моем файле build.gradle и выше исправлена ​​ошибка. Но это вызвало некоторые проблемы при десериализации POJO.
Я получаю ошибку ниже в моем модульные тесты -

Код: Выделить всё

Could not extract response: no suitable HttpMessageConverter found for response type [class com.kronos.udm.endpoint.host.falcon.client.model.EmployeeDownloadResponseType] and content type [application/json]
org.springframework.web.client.UnknownContentTypeException: Could not extract response:  n o   s u i t a b l e   H t t p M e s s a g e C o n v e r t e r   f o u n d   f o r   r e s p o n s e   t y p e   [ c l a s s   c o m . k r o n o s . u d m . e n d p o i n t . h o s t . f a l c o n . c l i e n t . m o d e l . E m p l o y e e D o w n l o a d R e s p o n s e T y p e ]   a n d   c o n t e n t   t y p e   [ a p p l i c a t i o n / j s o n ] < b r   / >         a t   a p p / / o r g . s p r i n g f r a m e w o r k . w e b . c l i e n t . H t t p M e s s a g e C o n v e r t e r E x t r a c t o r . e x t r a c t D a t a ( H t t p M e s s a g e C o n v e r t e r E x t r a c t o r . j a v a : 1 2 5 ) < b r   / >         a t   a p p / / o r g . s p r i n g f r a m e w o r k . w e b . c l i e n t . R e s t T e m p l a t e $ R e s p o n s e E n t i t y R e s p o n s e E x t r a c t o r . e x t r a c t D a t a ( R e s t T e m p l a t e . j a v a : 1 1 5 9 ) < b r   / >         a t   a p p / / o r g . s p r i n g f r a m e w o r k . w e b . c l i e n t . R e s t T e m p l a t e $ R e s p o n s e E n t i t y R e s p o n s e E x t r a c t o r . e x t r a c t D a t a ( R e s t T e m p l a t e . j a v a : 1 1 4 2 ) < b r   / >         a t   a p p / / o r g . s p r i n g f r a m e w o r k . w e b . c l i e n t . R e s t T e m p l a t e . d o E x e c u t e ( R e s t T e m p l a t e . j a v a : 8 9 2 ) < b r   / >         a t   a p p / / o r g . s p r i n g f r a m e w o r k . w e b . c l i e n t . R e s t T e m p l a t e . e x c h a n g e ( R e s t T e m p l a t e . j a v a : 7 3 0 ) < b r   / >         a t   a p p / / c o m . k r o n o s . u d m . p l a t f o r m . r e s t . c l i e n t . A b s t r a c t R e s t A P I C l i e n t . g e t R e s p o n s e ( A b s t r a c t R e s t A P I C l i e n t . j a v a : 1 1 5 ) < b r   / >         a t   a p p / / c o m . k r o n o s . u d m . p l a t f o r m . r e s t . c l i e n t . F a l c o n R e s t A P I S e r v i c e I m p l . d o P o s t ( F a l c o n R e s t A P I S e r v i c e I m p l . j a v a : 4 0 7 ) < b r   / >         a t   j a v a . b a s e @ 1 7 . 0 . 1 1 / j d k . i n t e r n a l . r e f l e c t . N a t i v e M e t h o d A c c e s s o r I m p l . i n v o k e 0 ( N a t i v e   M e t h o d ) < b r   / >         a t   j a v a . b a s e @ 1 7 . 0 . 1 1 / j d k . i n t e r n a l . r e f l e c t . N a t i v e M e t h o d A c c e s s o r I m p l . i n v o k e ( N a t i v e M e t h o d A c c e s s o r I m p l . j a v a : 7 7 ) < b r   / >         a t   j a v a . b a s e @ 1 7 . 0 . 1 1 / j d k . i n t e r n a l . r e f l e c t . D e l e g a t i n g M e t h o d A c c e s s o r I m p l . i n v o k e ( D e l e g a t i n g M e t h o d A c c e s s o r I m p l . j a v a : 4 3 ) < b r   / >         a t   j a v a . b a s e @ 1 7 . 0 . 1 1 / j a v a . l a n g . r e f l e c t . M e t h o d . i n v o k e ( M e t h o d . j a v a : 5 6 8 ) < b r   / >         a t   a p p / / o r g . s p r i n g f r a m e w o r k . a o p . s u p p o r t . A o p U t i l s . i n v o k e J o i n p o i n t U s i n g R e f l e c t i o n ( A o p U t i l s . j a v a : 3 5 5 ) < b r   / >         a t   a p p / / o r g . s p r i n g f r a m e w o r k . a o p . f r a m e w o r k . R e f l e c t i v e M e t h o d I n v o c a t i o n . i n v o k e J o i n p o i n t ( R e f l e c t i v e M e t h o d I n v o c a t i o n . j a v a : 1 9 6 ) < b r   / >         a t   a p p / / o r g . s p r i n g f r a m e w o r k . a o p . f r a m e w o r k . R e f l e c t i v e M e t h o d I n v o c a t i o n . p r o c e e d ( R e f l e c t i v e M e t h o d I n v o c a t i o n . j a v a : 1 6 3 ) < b r   / >         a t   a p p / / o r g . s p r i n g f r a m e w o r k . r e t r y . i n t e r c e p t o r . R e t r y O p e r a t i o n s I n t e r c e p t o r $ 1 . d o W i t h R e t r y ( R e t r y O p e r a t i o n s I n t e r c e p t o r . j a v a : 9 2 ) < b r   / >         a t   a p p / / o r g . s p r i n g f r a m e w o r k . r e t r y . s u p p o r t . R e t r y T e m p l a t e . d o E x e c u t e ( R e t r y T e m p l a t e . j a v a : 3 4 4 ) < b r   / >         a t   a p p / / o r g . s p r i n g f r a m e w o r k . r e t r y . s u p p o r t . R e t r y T e m p l a t e . e x e c u t e ( R e t r y T e m p l a t e . j a v a : 2 3 3 ) < b r   / >         a t   a p p / / o r g . s p r i n g f r a m e w o r k . r e t r y . i n t e r c e p t o r . R e t r y O p e r a t i o n s I n t e r c e p t o r . i n v o k e ( R e t r y O p e r a t i o n s I n t e r c e p t o r . j a v a : 1 1 3 ) < b r   / >         a t   a p p / / o r g . s p r i n g f r a m e w o r k . r e t r y . a n n o t a t i o n . A n n o t a t i o n A w a r e R e t r y O p e r a t i o n s I n t e r c e p t o r . i n v o k e ( A n n o t a t i o n A w a r e R e t r y O p e r a t i o n s I n t e r c e p t o r . j a v a : 1 6 2 ) < b r   / >         a t   a p p / / o r g . s p r i n g f r a m e w o r k . a o p . f r a m e w o r k . R e f l e c t i v e M e t h o d I n v o c a t i o n . p r o c e e d ( R e f l e c t i v e M e t h o d I n v o c a t i o n . j a v a : 1 8 4 ) < b r   / >         a t   a p p / / o r g . s p r i n g f r a m e w o r k . a o p . f r a m e w o r k . J d k D y n a m i c A o p P r o x y . i n v o k e ( J d k D y n a m i c A o p P r o x y . j a v a : 2 2 3 ) < b r   / >         a t   a p p / j d k . p r o x y 3 / j d k . p r o x y 3 . $ P r o x y 8 5 . d o P o s t ( U n k n o w n   S o u r c e ) < b r   / >         a t   a p p / / c o m . k r o n o s . u d m . e n d p o i n t . h o s t . f a l c o n . c l i e n t . F a l c o n R e s t A p i C l i e n t . h o s t P o s t ( F a l c o n R e s t A p i C l i e n t . j a v a : 3 0 8 ) < b r   / >         a t   a p p / / c o m . k r o n o s . u d m . e n d p o i n t . h o s t . f a l c o n . c l i e n t . F a l c o n R e s t A p i C l i e n t . f a l c o n H o s t P o s t ( F a l c o n R e s t A p i C l i e n t . j a v a : 2 9 6 ) < b r   / >         a t   a p p / / c o m . k r o n o s . u d m . e n d p o i n t . h o s t . f a l c o n . c l i e n t . F a l c o n R e s t A p i C l i e n t . f a l c o n H o s t P o s t ( F a l c o n R e s t A p i C l i e n t . j a v a : 2 9 1 ) < b r   / >         a t   a p p / / c o m . k r o n o s . u d m . e n d p o i n t . h o s t . f a l c o n . c l i e n t . F a l c o n H o s t C l i e n t . g e t E m p l o y e e D a t a ( F a l c o n H o s t C l i e n t . j a v a : 3 8 4 ) < b r   / >         a t   a p p / / c o m . k r o n o s . u d m . e n d p o i n t . h o s t . f a l c o n . c l i e n t . F a l c o n H o s t C l i e n t M i c r o T e s t . t e s t A l l E m p l o y e e s D a t a D o w n l o a d e d I s I n F i l e D a t a ( F a l c o n H o s t C l i e n t M i c r o T e s t . j a v a : 3 4 2 ) < b r   / >         a t   j a v a . b a s e @ 1 7 . 0 . 1 1 / j d k . i n t e r n a l . r e f l e c t . N a t i v e M e t h o d A c c e s s o r I m p l . i n v o k e 0 ( N a t i v e   M e t h o d ) < b r   / >         a t   j a v a . b a s e @ 1 7 . 0 . 1 1 / j d k . i n t e r n a l . r e f l e c t . N a t i v e M e t h o d A c c e s s o r I m p l . i n v o k e ( N a t i v e M e t h o d A c c e s s o r I m p l . j a v a : 7 7 ) < b r   / >         a t   j a v a . b a s e @ 1 7 . 0 . 1 1 / j d k . i n t e r n a l . r e f l e c t . D e l e g a t i n g M e t h o d A c c e s s o r I m p l . i n v o k e ( D e l e g a t i n g M e t h o d A c c e s s o r I m p l . j a v a : 4 3 ) < b r   / >         a t   j a v a . b a s e @ 1 7 . 0 . 1 1 / j a v a . l a n g . r e f l e c t . M e t h o d . i n v o k e ( M e t h o d . j a v a : 5 6 8 ) < b r   / >         a t   a p p / / o r g . j u n i t . r u n n e r s . m o d e l . F r a m e w o r k M e t h o d $ 1 . r u n R e f l e c t i v e C a l l ( F r a m e w o r k M e t h o d . j a v a : 5 9 ) < b r   / >         a t   a p p / / o r g . j u n i t . i n t e r n a l . r u n n e r s . m o d e l . R e f l e c t i v e C a l l a b l e . r u n ( R e f l e c t i v e C a l l a b l e . j a v a : 1 2 ) < b r   / >         a t   a p p / / o r g . j u n i t . r u n n e r s . m o d e l . F r a m e w o r k M e t h o d . i n v o k e E x p l o s i v e l y ( F r a m e w o r k M e thod.java:56)
at app//org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at app//org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:76)
at app//org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:84)
at app//org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at app//org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
at app//org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at app//org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
at app//org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
at app//org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
at app//org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:252)
at app//org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
at app//org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
at app//org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
at app//org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
at app//org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
at app//org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
at app//org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at app//org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at app//org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
at app//org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at app//org.junit.runners.ParentRunner.run(ParentRunner.java:413)
at app//org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:108)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:58)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:40)
at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:60)
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:52)
at [email protected]/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at [email protected]/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at [email protected]/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at [email protected]/java.lang.reflect.Method.invoke(Method.java:568)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
at jdk.proxy2/jdk.proxy2.$Proxy5.processTestClass(Unknown Source)
at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:176)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:113)
at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:65)
at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)

Если я удалю параметры - из build.gradle, десериализация произойдет нормально, и ответ Json преобразуется в объект Java.
Я пытался отладить файлы, код переходит к методу RestTemplate.java, указанному ниже -

Код: Выделить всё

    @Override
public  ResponseEntity exchange(RequestEntity entity, Class responseType)
throws RestClientException {

RequestCallback requestCallback = httpEntityCallback(entity, responseType);
ResponseExtractor responseExtractor = responseEntityExtractor(responseType);
return nonNull(doExecute(resolveUrl(entity), resolveUriTemplate(entity), entity.getMethod(), requestCallback, responseExtractor));
}
и, наконец, достигает метода ExtractData класса HttpMessageConverterExtractor.java

Код: Выделить всё

public T extractData(ClientHttpResponse response) throws IOException {
IntrospectingClientHttpResponse responseWrapper = new IntrospectingClientHttpResponse(response);
if (!responseWrapper.hasMessageBody() || responseWrapper.hasEmptyMessageBody()) {
return null;
}
MediaType contentType = getContentType(responseWrapper);

try {
for (HttpMessageConverter messageConverter : this.messageConverters) {
if (messageConverter instanceof GenericHttpMessageConverter genericMessageConverter) {
if (genericMessageConverter.canRead(this.responseType, null, contentType)) {
if (logger.isDebugEnabled()) {
ResolvableType resolvableType = ResolvableType.forType(this.responseType);
logger.debug("Reading to [" + resolvableType + "]");
}
return (T) genericMessageConverter.read(this.responseType, null, responseWrapper);
}
}
условие if genericMessageConverter.canRead(this.responseType, null, contentType) дает значение false, когда messageConverter является MappingJackson2HttpMessageConverter, поэтому оно входит внутрь с параметром -parameter, но без него значение истинно, и оно идет внутри и вернуть преобразованный объект.
мой объект POJO не имел аннотации @JsonProperty для своих переменных, поэтому он применил его, но это не сработало. Я также пробовал использовать аннотацию @JsonCreater, но с -parameters все равно не получилось.
Пожалуйста, помогите мне, как это исправить.

Подробнее здесь: https://stackoverflow.com/questions/792 ... ler-option
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Проблема десериализации Джексона с опцией компилятора -parameter
    Anonymous » » в форуме JAVA
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Проблема десериализации Джексона с опцией компилятора -parameter
    Anonymous » » в форуме JAVA
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • В чем разница между опцией компилятора `-O0` и опцией` -Og`?
    Anonymous » » в форуме C++
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Перенос значений AppIntent @Parameter в новый @Parameter.
    Anonymous » » в форуме IOS
    0 Ответы
    46 Просмотры
    Последнее сообщение Anonymous
  • Нулевое значение десериализации для перечисления с помощью Джексона
    Anonymous » » в форуме JAVA
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»