cglib | Byte Code Generation Library is high level API | Reflection library

 by   cglib Java Version: 3.3.0 License: Apache-2.0

kandi X-RAY | cglib Summary

cglib is a Java library typically used in Programming Style, Reflection applications. cglib has no bugs, it has no vulnerabilities, it has build file available, it has a Permissive License and it has high support. You can download it from GitHub, Maven.
cglib - Byte Code Generation Library is high level API to generate and transform Java byte code. It is used by AOP, testing, data access frameworks to generate dynamic proxy objects and intercept field access.
    Support
      Quality
        Security
          License
            Reuse
            Support
              Quality
                Security
                  License
                    Reuse

                      kandi-support Support

                        summary
                        cglib has a highly active ecosystem.
                        summary
                        It has 4582 star(s) with 875 fork(s). There are 255 watchers for this library.
                        summary
                        It had no major release in the last 12 months.
                        summary
                        There are 67 open issues and 48 have been closed. On average issues are closed in 31 days. There are 22 open pull requests and 0 closed requests.
                        summary
                        It has a positive sentiment in the developer community.
                        summary
                        The latest version of cglib is 3.3.0
                        cglib Support
                          Best in #Reflection
                            Average in #Reflection
                            cglib Support
                              Best in #Reflection
                                Average in #Reflection

                                  kandi-Quality Quality

                                    summary
                                    cglib has 0 bugs and 0 code smells.
                                    cglib Quality
                                      Best in #Reflection
                                        Average in #Reflection
                                        cglib Quality
                                          Best in #Reflection
                                            Average in #Reflection

                                              kandi-Security Security

                                                summary
                                                cglib has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
                                                summary
                                                cglib code analysis shows 0 unresolved vulnerabilities.
                                                summary
                                                There are 0 security hotspots that need review.
                                                cglib Security
                                                  Best in #Reflection
                                                    Average in #Reflection
                                                    cglib Security
                                                      Best in #Reflection
                                                        Average in #Reflection

                                                          kandi-License License

                                                            summary
                                                            cglib is licensed under the Apache-2.0 License. This license is Permissive.
                                                            summary
                                                            Permissive licenses have the least restrictions, and you can use them in most projects.
                                                            cglib License
                                                              Best in #Reflection
                                                                Average in #Reflection
                                                                cglib License
                                                                  Best in #Reflection
                                                                    Average in #Reflection

                                                                      kandi-Reuse Reuse

                                                                        summary
                                                                        cglib releases are available to install and integrate.
                                                                        summary
                                                                        Deployable package is available in Maven.
                                                                        summary
                                                                        Build file is available. You can build the component from source.
                                                                        cglib Reuse
                                                                          Best in #Reflection
                                                                            Average in #Reflection
                                                                            cglib Reuse
                                                                              Best in #Reflection
                                                                                Average in #Reflection
                                                                                  Top functions reviewed by kandi - BETA
                                                                                  kandi has reviewed cglib and discovered the below as its top functions. This is intended to give you an instant insight into cglib implemented functionality, and help decide if they suit your requirements.
                                                                                  • Generate the class
                                                                                    • Emits a list of methods
                                                                                    • Generate bind callbacks
                                                                                    • Process a switch assignment
                                                                                  • Generates code to write a set of methods
                                                                                    • Unboxes an object on the top of the stack
                                                                                    • Allocates the arguments of the current method
                                                                                    • Generate find proxy method
                                                                                  • Runs the test program
                                                                                  • Generate static code
                                                                                  • Generates a set of methods
                                                                                  • Generates getter method
                                                                                  • Generate a class
                                                                                  • Generates the get method
                                                                                  • Generate key set
                                                                                  • Declares an object field with given name and value
                                                                                  • Wrap a class
                                                                                  • Loads a class
                                                                                  • Load a method
                                                                                  • Generate the constructors
                                                                                  • Generates setter method
                                                                                  • Generates the code generator
                                                                                  • Generate Swaps method
                                                                                  • Performs a special switch on a method
                                                                                  • Generates the put method
                                                                                  • Intercept the method invocation
                                                                                  Get all kandi verified functions for this library.
                                                                                  Get all kandi verified functions for this library.

                                                                                  cglib Key Features

                                                                                  cglib - Byte Code Generation Library is high level API to generate and transform Java byte code. It is used by AOP, testing, data access frameworks to generate dynamic proxy objects and intercept field access.

                                                                                  cglib Examples and Code Snippets

                                                                                  No Code Snippets are available at this moment for cglib.
                                                                                  Community Discussions

                                                                                  Trending Discussions on cglib

                                                                                  java.lang.RuntimeException: not supported: class org.spockframework.gentyref.CaptureTypeImpl
                                                                                  chevron right
                                                                                  Problem manipulating child entity of a OneToMany relation with Cascade ALL
                                                                                  chevron right
                                                                                  What is causing Spring not to be able to load the configuration class when using AnnotationConfigApplicationContext?
                                                                                  chevron right
                                                                                  Is it possible to instrument a program that also uses dynamic bytecode generation?
                                                                                  chevron right
                                                                                  SEVERE: Exception sending context initialized event to listener instance of class [org.springframework.web.context.ContextLoaderListener]
                                                                                  chevron right
                                                                                  How to fetch calendar events for a user using Microsoft Graph API with java
                                                                                  chevron right
                                                                                  How to resolve ClassCastException in MultiResourceItemReader Spring Batch
                                                                                  chevron right
                                                                                  spring-aop On apple silicon (M1) : Illegal method name
                                                                                  chevron right
                                                                                  Play framework in Java - errors in "hello world" example
                                                                                  chevron right
                                                                                  nested exception is org.hibernate.exception.SQLGrammarException:could not execute query] with root cause java.sql.SQLException: Column 'id' not found
                                                                                  chevron right

                                                                                  QUESTION

                                                                                  java.lang.RuntimeException: not supported: class org.spockframework.gentyref.CaptureTypeImpl
                                                                                  Asked 2022-Mar-30 at 13:59

                                                                                  Spock is being used to execute an integration test in a Spring Boot project (2.1.18.RELEASE). When I run with 1.3-groovy-2.5, I get this error:

                                                                                  Caused by: java.lang.RuntimeException: not supported: class org.spockframework.gentyref.CaptureTypeImpl
                                                                                      at org.spockframework.gentyref.GenericTypeReflector.erase(GenericTypeReflector.java:33)
                                                                                      at org.spockframework.mock.runtime.StaticMockMethod.getReturnType(StaticMockMethod.java:50)
                                                                                      at org.spockframework.mock.EmptyOrDummyResponse.respond(EmptyOrDummyResponse.java:68)
                                                                                      at org.spockframework.mock.runtime.MockController.handle(MockController.java:50)
                                                                                      at org.spockframework.mock.runtime.JavaMockInterceptor.intercept(JavaMockInterceptor.java:72)
                                                                                      at org.spockframework.mock.runtime.ByteBuddyInterceptorAdapter.interceptNonAbstract(ByteBuddyInterceptorAdapter.java:35)
                                                                                      at com.foo.controller.ConversionsController.createConversionJob(ConversionsController.java:68)
                                                                                      at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
                                                                                      at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                                                                                      at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
                                                                                      at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
                                                                                      at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
                                                                                      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:1040)
                                                                                      at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
                                                                                      at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
                                                                                      ... 18 more
                                                                                  

                                                                                  If I update Spock to a more recent version (eg. 2.1-groovy-2.5) I get this error:

                                                                                  [ERROR] org.apache.maven.surefire.booter.SurefireBooterForkException: There was an error in the forked process
                                                                                  [ERROR] java.util.ServiceConfigurationError: org.junit.platform.engine.TestEngine: org.spockframework.runtime.SpockEngine Unable to get public no-arg constructor
                                                                                  [ERROR]     at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:733)
                                                                                  [ERROR]     at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:305)
                                                                                  [ERROR]     at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:265)
                                                                                  [ERROR]     at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeProvider(AbstractSurefireMojo.java:1314)
                                                                                  [ERROR]     at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefireMojo.java:1159)
                                                                                  [ERROR]     at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:932)
                                                                                  [ERROR]     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
                                                                                  [ERROR]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210)
                                                                                  [ERROR]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)
                                                                                  [ERROR]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
                                                                                  [ERROR]     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
                                                                                  [ERROR]     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
                                                                                  [ERROR]     at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
                                                                                  [ERROR]     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
                                                                                  [ERROR]     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
                                                                                  [ERROR]     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
                                                                                  [ERROR]     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
                                                                                  [ERROR]     at org.apache.maven.cli.MavenCli.execute(MavenCli.java:957)
                                                                                  [ERROR]     at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:289)
                                                                                  [ERROR]     at org.apache.maven.cli.MavenCli.main(MavenCli.java:193)
                                                                                  [ERROR]     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                                                                                  [ERROR]     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
                                                                                  [ERROR]     at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                                                                                  [ERROR]     at java.base/java.lang.reflect.Method.invoke(Method.java:566)
                                                                                  [ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
                                                                                  [ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
                                                                                  [ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
                                                                                  [ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
                                                                                  

                                                                                  I am using Java 11 and Maven 3.6.3. My pom.xml is rather long, so I've reduced it to some snippets that focus on versions and test dependencies:

                                                                                          
                                                                                                  UTF-8
                                                                                                  UTF-8
                                                                                                  11
                                                                                                  1.11.0
                                                                                                  3.2.12
                                                                                                  1.12.0
                                                                                                  2.5.15
                                                                                                  3.2
                                                                                                  1.3-groovy-2.5
                                                                                                  3.3.0
                                                                                                  0.8.7
                                                                                                  3.0.0-M5
                                                                                                  3.0.0-M5
                                                                                          
                                                                                  
                                                                                                  
                                                                                                          org.springframework.boot
                                                                                                          spring-boot-starter-test
                                                                                                          test
                                                                                                          
                                                                                                                  
                                                                                                                          com.vaadin.external.google
                                                                                                                          android-json
                                                                                                                  
                                                                                                          
                                                                                                  
                                                                                                  
                                                                                                          org.spockframework
                                                                                                          spock-core
                                                                                                          test
                                                                                                  
                                                                                                  
                                                                                                  
                                                                                                  
                                                                                                          org.spockframework
                                                                                                          spock-spring
                                                                                                          test
                                                                                                  
                                                                                                   
                                                                                                          net.bytebuddy
                                                                                                          byte-buddy
                                                                                                          ${bytebuddy.version}
                                                                                                          test
                                                                                                  
                                                                                                   
                                                                                                          org.objenesis
                                                                                                          objenesis
                                                                                                          ${objenesis.version}
                                                                                                          test
                                                                                                  
                                                                                  
                                                                                                         
                                                                                                                  
                                                                                                                  org.codehaus.gmavenplus
                                                                                                                  gmavenplus-plugin
                                                                                                                  ${gmavenplus.version}
                                                                                                                  
                                                                                                                          
                                                                                                                                  
                                                                                                                                          compile
                                                                                                                                          compileTests
                                                                                                                                  
                                                                                                                          
                                                                                                                  
                                                                                                                  
                                                                                                                          11
                                                                                                                  
                                                                                                          
                                                                                  

                                                                                  Any help with troubleshooting this further is greatly appreciated. I modelled my pom.xml after the examples in the spock framework project:

                                                                                  ANSWER

                                                                                  Answered 2022-Mar-28 at 21:40

                                                                                  Regarding java.util.ServiceConfigurationError: org.junit.platform.engine.TestEngine: org.spockframework.runtime.SpockEngine Unable to get public no-arg constructor

                                                                                  Spring Boot 2.1.18.RELEASE is really old, it manages JUnit 5 to 5.3.2 while Spock 2.x requires >= 5.8. You can try setting 5.8.1 if you can't upgrade Spring Boot to a more recent version.

                                                                                  As for the type reflection error, we can't say much since you didn't share any code. Only that com.foo.controller.ConversionsController.createConversionJob(ConversionsController.java:68) probably has some weird generics or is calling something that does.

                                                                                  Source https://stackoverflow.com/questions/71653646

                                                                                  QUESTION

                                                                                  Problem manipulating child entity of a OneToMany relation with Cascade ALL
                                                                                  Asked 2022-Mar-14 at 17:38

                                                                                  I have a performance problem using bi-directional relationship (OneToMany - ManyToOne).

                                                                                  I have an entity Interaction that can have many ClassifiedGroup (see classes bellow for more details) but I have a specific use case where I need to delete few ClassifiedGroups and add few others.

                                                                                  The problem is that when I use the InteractionRepository.java itself (a simple JpaRepository) to save all modifications of related ClassifiedGroup, the code will have to fetch all groups from the database linked with an Interaction. It will also fetch many other attributes of the Interaction that can also be expensive. I do not want to manipulate the Interaction entity to delete/create new ClassifiedGroup but I also want to have the cascade type to ALL because I create the first groups when the Interaction is created and if I delete the interaction itself, all groups should be deleted.

                                                                                  I tried to create a JpaRepository for the ClassifiedGroup entity and manipulate it directly but I'm getting errors trying to save it:

                                                                                  Code:

                                                                                        List toAdd = generate(); // generate list to add
                                                                                        toAdd.forEach(g -> g.setInteraction(interaction));
                                                                                  
                                                                                        this.classifiedGroupRepository.saveAll(toAdd);
                                                                                  

                                                                                  Error:

                                                                                  org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'java.util.UUID' to required type 'br.com.stilingue.smartcare.entities.Interaction' for property 'interaction'; nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.util.UUID' to required type 'br.com.stilingue.smartcare.entities.Interaction' for property 'interaction': no matching editors or conversion strategy found
                                                                                  
                                                                                      at org.springframework.beans.AbstractNestablePropertyAccessor.convertIfNecessary(AbstractNestablePropertyAccessor.java:595)
                                                                                      at org.springframework.beans.AbstractNestablePropertyAccessor.convertForProperty(AbstractNestablePropertyAccessor.java:609)
                                                                                      at org.springframework.beans.AbstractNestablePropertyAccessor.processLocalProperty(AbstractNestablePropertyAccessor.java:458)
                                                                                      at org.springframework.beans.AbstractNestablePropertyAccessor.setPropertyValue(AbstractNestablePropertyAccessor.java:278)
                                                                                      at org.springframework.beans.AbstractNestablePropertyAccessor.setPropertyValue(AbstractNestablePropertyAccessor.java:246)
                                                                                      at org.springframework.data.util.DirectFieldAccessFallbackBeanWrapper.setPropertyValue(DirectFieldAccessFallbackBeanWrapper.java:75)
                                                                                      at org.springframework.data.jpa.repository.support.JpaMetamodelEntityInformation$IdentifierDerivingDirectFieldAccessFallbackBeanWrapper.setPropertyValue(JpaMetamodelEntityInformation.java:367)
                                                                                      at org.springframework.data.jpa.repository.support.JpaMetamodelEntityInformation.getId(JpaMetamodelEntityInformation.java:175)
                                                                                      at org.springframework.data.repository.core.support.AbstractEntityInformation.isNew(AbstractEntityInformation.java:46)
                                                                                      at org.springframework.data.jpa.repository.support.JpaMetamodelEntityInformation.isNew(JpaMetamodelEntityInformation.java:246)
                                                                                      at org.springframework.data.jpa.repository.support.SimpleJpaRepository.save(SimpleJpaRepository.java:596)
                                                                                      at org.springframework.data.jpa.repository.support.SimpleJpaRepository.saveAll(SimpleJpaRepository.java:631)
                                                                                      at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                                                                                      at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
                                                                                      at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                                                                                      at java.base/java.lang.reflect.Method.invoke(Method.java:564)
                                                                                      at org.springframework.data.repository.core.support.RepositoryMethodInvoker$RepositoryFragmentMethodInvoker.lambda$new$0(RepositoryMethodInvoker.java:289)
                                                                                      at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137)
                                                                                      at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121)
                                                                                      at org.springframework.data.repository.core.support.RepositoryComposition$RepositoryFragments.invoke(RepositoryComposition.java:529)
                                                                                      at org.springframework.data.repository.core.support.RepositoryComposition.invoke(RepositoryComposition.java:285)
                                                                                      at org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.invoke(RepositoryFactorySupport.java:599)
                                                                                      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
                                                                                      at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:163)
                                                                                      at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:138)
                                                                                      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
                                                                                      at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:80)
                                                                                      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
                                                                                      at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123)
                                                                                      at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388)
                                                                                      at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)
                                                                                      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
                                                                                      at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137)
                                                                                      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
                                                                                      at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:174)
                                                                                      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
                                                                                      at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
                                                                                      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
                                                                                      at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215)
                                                                                      at com.sun.proxy.$Proxy197.saveAll(Unknown Source)
                                                                                      at br.com.stilingue.smartcare.event.interaction.update.strategy.impl.InteractionStilingueArrayUpdateStrategy.updateInteraction(InteractionStilingueArrayUpdateStrategy.java:78)
                                                                                      at br.com.stilingue.smartcare.event.interaction.update.strategy.impl.InteractionStilingueArrayUpdateStrategy$$FastClassBySpringCGLIB$$b5a01170.invoke()
                                                                                      at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
                                                                                      at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779)
                                                                                      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
                                                                                      at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)
                                                                                      at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123)
                                                                                      at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388)
                                                                                      at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)
                                                                                      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
                                                                                      at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)
                                                                                      at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:692)
                                                                                      at br.com.stilingue.smartcare.event.interaction.update.strategy.impl.InteractionStilingueArrayUpdateStrategy$$EnhancerBySpringCGLIB$$6a4de66a.updateInteraction()
                                                                                      at br.com.stilingue.smartcare.event.interaction.update.strategy.impl.InteractionStilingueArrayUpdateStrategyIntegrationTest.testShouldAddNewGroups(InteractionStilingueArrayUpdateStrategyIntegrationTest.java:114)
                                                                                      at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                                                                                      at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
                                                                                      at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                                                                                      at java.base/java.lang.reflect.Method.invoke(Method.java:564)
                                                                                      at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688)
                                                                                      at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
                                                                                      at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
                                                                                      at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
                                                                                      at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
                                                                                      at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
                                                                                      at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
                                                                                      at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
                                                                                      at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
                                                                                      at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
                                                                                      at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
                                                                                      at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
                                                                                      at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
                                                                                      at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
                                                                                      at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:210)
                                                                                      at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
                                                                                      at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:206)
                                                                                      at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:131)
                                                                                      at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65)
                                                                                      at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
                                                                                      at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
                                                                                      at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
                                                                                      at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
                                                                                      at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
                                                                                      at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
                                                                                      at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
                                                                                      at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
                                                                                      at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
                                                                                      at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
                                                                                      at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
                                                                                      at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
                                                                                      at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
                                                                                      at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
                                                                                      at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
                                                                                      at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
                                                                                      at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
                                                                                      at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
                                                                                      at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
                                                                                      at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
                                                                                      at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
                                                                                      at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
                                                                                      at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
                                                                                      at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
                                                                                      at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
                                                                                      at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
                                                                                      at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
                                                                                      at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
                                                                                      at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
                                                                                      at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
                                                                                      at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
                                                                                      at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108)
                                                                                      at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
                                                                                      at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
                                                                                      at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
                                                                                      at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
                                                                                      at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:96)
                                                                                      at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75)
                                                                                      at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:71)
                                                                                      at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
                                                                                      at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
                                                                                      at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
                                                                                      at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
                                                                                      at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
                                                                                  Caused by: java.lang.IllegalStateException: Cannot convert value of type 'java.util.UUID' to required type 'br.com.stilingue.smartcare.entities.Interaction' for property 'interaction': no matching editors or conversion strategy found
                                                                                      at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:262)
                                                                                      at org.springframework.beans.AbstractNestablePropertyAccessor.convertIfNecessary(AbstractNestablePropertyAccessor.java:590)
                                                                                      ... 120 more
                                                                                  

                                                                                  I've found a few other issues saying if I have the CascadeType.PERSIST in the parent entity I will not be able to manipulate the child entity directly because the parent entity will be the "owner" of the child entity.

                                                                                  But I have to ask: is there any way to avoid this performance bottleneck? My Interaction entity have a few other OneToOne, ManyToMany, ManyToOne and OneToMany relations and every time I use the InteractionRepository#save all relations are fetched from database. I really need to be able to create/delete ClassifiedGroup entities by my own.

                                                                                  My classes:

                                                                                  Interaction

                                                                                  package br.com.stilingue.smartcare.entities;
                                                                                  
                                                                                  import com.fasterxml.jackson.annotation.JsonIgnore;
                                                                                  import com.google.cloud.spanner.hibernate.types.SpannerJsonType;
                                                                                  import java.sql.Timestamp;
                                                                                  import java.util.List;
                                                                                  import java.util.Set;
                                                                                  import java.util.UUID;
                                                                                  import javax.persistence.CascadeType;
                                                                                  import javax.persistence.Column;
                                                                                  import javax.persistence.Entity;
                                                                                  import javax.persistence.EnumType;
                                                                                  import javax.persistence.Enumerated;
                                                                                  import javax.persistence.FetchType;
                                                                                  import javax.persistence.GeneratedValue;
                                                                                  import javax.persistence.Id;
                                                                                  import javax.persistence.JoinColumn;
                                                                                  import javax.persistence.OneToMany;
                                                                                  import javax.persistence.Table;
                                                                                  import javax.persistence.UniqueConstraint;
                                                                                  import lombok.Data;
                                                                                  import lombok.EqualsAndHashCode;
                                                                                  import lombok.ToString;
                                                                                  import lombok.experimental.Accessors;
                                                                                  import org.hibernate.annotations.Type;
                                                                                  import org.hibernate.annotations.TypeDef;
                                                                                  
                                                                                  @Data
                                                                                  @Entity
                                                                                  @Accessors(chain = true)
                                                                                  @Table(
                                                                                      name = "interactions",
                                                                                      uniqueConstraints = {@UniqueConstraint(columnNames = {"pid", "channel", "universe_id"})})
                                                                                  public class Interaction {
                                                                                  
                                                                                    @Id
                                                                                    @GeneratedValue
                                                                                    @Type(type = "uuid-char")
                                                                                    @Column(name = "interaction_id", nullable = false)
                                                                                    private UUID interactionId;
                                                                                  
                                                                                    @Column(name = "pid", nullable = false)
                                                                                    private String pid;
                                                                                  
                                                                                    @Enumerated(EnumType.STRING)
                                                                                    @Column(name = "channel", nullable = false)
                                                                                    private Channel channel;
                                                                                  
                                                                                    @Column(name = "universe_id", nullable = false)
                                                                                    private Long universeId;
                                                                                  
                                                                                    @Column(name = "post_date", nullable = false)
                                                                                    private Timestamp postDate;
                                                                                  
                                                                                    @ToString.Exclude
                                                                                    @EqualsAndHashCode.Exclude
                                                                                    @OneToMany(
                                                                                        mappedBy = "interaction",
                                                                                        cascade = CascadeType.ALL,
                                                                                        fetch = FetchType.LAZY,
                                                                                        orphanRemoval = true)
                                                                                    private Set groups;
                                                                                  
                                                                                    // many other relations/attributes not relevant for the issue, but they also are loaded when I use InteractionRepository#save method
                                                                                  
                                                                                    // method when the Interaction is created the first time
                                                                                    public void setRelations() {
                                                                                      if (this.groups != null) {
                                                                                        this.groups.forEach(group -> group.setInteraction(this));
                                                                                      }
                                                                                    }
                                                                                  }
                                                                                  

                                                                                  ClassifiedGroup

                                                                                  package br.com.stilingue.smartcare.entities;
                                                                                  
                                                                                  import java.io.Serializable;
                                                                                  import javax.persistence.Column;
                                                                                  import javax.persistence.Entity;
                                                                                  import javax.persistence.EnumType;
                                                                                  import javax.persistence.Enumerated;
                                                                                  import javax.persistence.FetchType;
                                                                                  import javax.persistence.Id;
                                                                                  import javax.persistence.IdClass;
                                                                                  import javax.persistence.JoinColumn;
                                                                                  import javax.persistence.ManyToOne;
                                                                                  import javax.persistence.Table;
                                                                                  import lombok.Data;
                                                                                  import lombok.EqualsAndHashCode;
                                                                                  import lombok.NoArgsConstructor;
                                                                                  import lombok.ToString;
                                                                                  import lombok.experimental.Accessors;
                                                                                  
                                                                                  @Data
                                                                                  @Entity
                                                                                  @NoArgsConstructor
                                                                                  @Accessors(chain = true)
                                                                                  @Table(name = "classified_groups")
                                                                                  @IdClass(ClassifiedGroup.PrimaryKeys.class)
                                                                                  public class ClassifiedGroup {
                                                                                    @Data
                                                                                    public static class PrimaryKeys implements Serializable {
                                                                                      private Interaction interaction;
                                                                                      private String descriptor;
                                                                                      private String value;
                                                                                    }
                                                                                  
                                                                                    public ClassifiedGroup(String group, ClassificationType type, String descriptor) {
                                                                                      this.value = group;
                                                                                      this.type = type;
                                                                                      this.descriptor = descriptor;
                                                                                    }
                                                                                  
                                                                                    public ClassifiedGroup(String group, ClassificationType type) {
                                                                                      this(group, type, "");
                                                                                    }
                                                                                  
                                                                                    @Id
                                                                                    @ToString.Exclude
                                                                                    @EqualsAndHashCode.Exclude
                                                                                    @ManyToOne(fetch = FetchType.LAZY)
                                                                                    @JoinColumn(
                                                                                        name = "interaction_id",
                                                                                        referencedColumnName = "interaction_id",
                                                                                        insertable = false,
                                                                                        updatable = false)
                                                                                    private Interaction interaction;
                                                                                  
                                                                                    @Enumerated(EnumType.STRING)
                                                                                    @Column(name = "type", nullable = false)
                                                                                    private ClassificationType type;
                                                                                  
                                                                                    @Id
                                                                                    @Column(name = "value", nullable = false)
                                                                                    private String value;
                                                                                  
                                                                                    @Id
                                                                                    @Column(name = "descriptor", nullable = false)
                                                                                    private String descriptor = "";
                                                                                  }
                                                                                  

                                                                                  ClassifiedGroupRepository

                                                                                  package br.com.stilingue.smartcare.repositories;
                                                                                  
                                                                                  import br.com.stilingue.smartcare.entities.ClassifiedGroup;
                                                                                  import org.springframework.data.jpa.repository.JpaRepository;
                                                                                  import org.springframework.stereotype.Repository;
                                                                                  
                                                                                  @Repository
                                                                                  public interface ClassifiedGroupRepository
                                                                                      extends JpaRepository {}
                                                                                  

                                                                                  InteractionRepository

                                                                                  package br.com.stilingue.smartcare.repositories;
                                                                                  
                                                                                  import java.util.Optional;
                                                                                  import java.util.UUID;
                                                                                  import org.springframework.data.jpa.repository.JpaRepository;
                                                                                  import org.springframework.stereotype.Repository;
                                                                                  
                                                                                  @Repository
                                                                                  public interface InteractionRepository extends JpaRepository{}
                                                                                  

                                                                                  I'm currently using Hibernate 5.6.5.Final.

                                                                                  ANSWER

                                                                                  Answered 2022-Mar-14 at 17:38

                                                                                  Your mappings are incorrect - you'll need to look into JPA tutorials on how to map derived ids, but the error tells you what is wrong, pointing you at your ClassifiedGroup.interaction mapping(s). The PK class must use the Interaction's ID (a UUID), not the Interaction instance itself.

                                                                                    public static class PrimaryKeys implements Serializable {
                                                                                      private UUID interaction;
                                                                                      private String descriptor;
                                                                                      private String value;
                                                                                    }
                                                                                  

                                                                                  As JPA needs to insert the value into the defined "interaction_id" fk, your mapping within ClassifiedGroup should be writeable, similar to:

                                                                                    @Id
                                                                                    @ManyToOne(fetch = FetchType.LAZY)
                                                                                    @JoinColumn(
                                                                                        name = "interaction_id",
                                                                                        referencedColumnName = "interaction_id")
                                                                                    private Interaction interaction;
                                                                                  

                                                                                  For your other questions - yes, there are many many ways to handle what you want, but it is a matter of how much work you want to put in. Making relationships lazy avoids them being unnecessarily fetched, but you then have to consider serialization through other mechanisms and changes to detached entities. I don't trust Spring/JPA providers to automatically know what I want done when it receives a null value in a relationship, as it could be that the data wasn't serialized, or it could be a change. So where performance is a concern, I write my own merge methods to handle taking in serialized data (from say a REST interface) and determining how it should be merged into a managed instance if it exists.

                                                                                  Also note that CascadeType.ALL might not be what you really want. All you stated you want is that changes to the Interaction.groups list are picked up and that referenced ClassifiedGroups are removed with the Interaction, and as a convince so you can persist an Interaction and its groups list in one call. That is just cascade={PERSIST, REMOVE}. ALL includes merge, refresh and detach which have performance overhead and might cause you grief if you don't really need them. Merge especially - when you pass in an Interaction with changes and ClassifiedGroups within its list of groups, any differences in those ClassifiedGroups from what is in the database will get merged. This can lead to consequences like stale data overwrites, and of course has a large overhead, as merge will cascade over ClassifiedGroup references as well. Don't use cascade options lightly.

                                                                                  Source https://stackoverflow.com/questions/71469123

                                                                                  QUESTION

                                                                                  What is causing Spring not to be able to load the configuration class when using AnnotationConfigApplicationContext?
                                                                                  Asked 2022-Mar-03 at 16:25

                                                                                  I've run across this issue recently and after searching the stackoverflow site, couldn't find a working solution. The error I'm getting is that Spring is having issue loading the configuration class. I'm using annotations and a Spring class to configure, instead of an XML file, to practice configuring Java apps with annotations instead of an XML file.

                                                                                  I've double checked to make sure the needed annotations were there and that the Spring config file was marked with @Configuration and all of the beans inside the config file marked with @Bean. Also, the particular beans were marked with @Component.

                                                                                  After creating a test class, it seems Spring is still having trouble finding the config file. I doubled checked the pom file to see if I was missing any dependencies but as far as I know, it seems the needed dependencies are there. I'm not sure what else I'm missing or why Spring is having trouble finding the config file. Any help would be greatly appreciated.

                                                                                  Here is my pom.xml file:

                                                                                  
                                                                                  
                                                                                  
                                                                                    4.0.0
                                                                                  
                                                                                    com.spring
                                                                                    Spring_JavaConfig
                                                                                    0.0.1-SNAPSHOT
                                                                                  
                                                                                    Spring_JavaConfig
                                                                                    
                                                                                    http://www.example.com
                                                                                  
                                                                                    
                                                                                      4.3.6.RELEASE
                                                                                    
                                                                                  
                                                                                    
                                                                                      
                                                                                        org.springframework
                                                                                        spring-core
                                                                                        ${springframework.version}
                                                                                      
                                                                                      
                                                                                        org.springframework
                                                                                        spring-context
                                                                                        ${springframework.version}
                                                                                      
                                                                                    
                                                                                    
                                                                                      
                                                                                        
                                                                                          
                                                                                            org.apache.maven.plugins
                                                                                            maven-compiler-plugin
                                                                                            3.2
                                                                                            
                                                                                              1.8
                                                                                              1.8
                                                                                            
                                                                                          
                                                                                        
                                                                                      
                                                                                    
                                                                                  
                                                                                  

                                                                                  And here are my Java files:

                                                                                  Dao class (not really accessing database, just practicing configuring with Spring Annotations instead of XML file):

                                                                                  package com.spring;
                                                                                  
                                                                                  import org.springframework.stereotype.Component;
                                                                                  
                                                                                  @Component
                                                                                  public class Dao {
                                                                                    public void create() {
                                                                                      System.out.println("Created");
                                                                                    }
                                                                                  }
                                                                                  

                                                                                  Spring Config class:

                                                                                  package com.spring;
                                                                                  
                                                                                  import org.springframework.context.annotation.Bean;
                                                                                  import org.springframework.context.annotation.Configuration;
                                                                                  
                                                                                  @Configuration
                                                                                  public class SpringConfig {
                                                                                    @Bean
                                                                                    public Dao dao() {
                                                                                      return new Dao();
                                                                                    }
                                                                                  }
                                                                                  

                                                                                  Test class:

                                                                                  package com.spring;
                                                                                  
                                                                                  import org.springframework.context.annotation.AnnotationConfigApplicationContext;
                                                                                  
                                                                                  public class Test {
                                                                                    public static void main(String[] args) {
                                                                                      AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
                                                                                      Dao dao = context.getBean(Dao.class);
                                                                                      dao.create();
                                                                                      context.close();
                                                                                    }
                                                                                  }
                                                                                  

                                                                                  Here is the error I'm getting:

                                                                                  Feb 28, 2022 1:39:12 PM org.springframework.context.annotation.AnnotationConfigApplicationContext prepareRefresh
                                                                                  INFO: Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@39c0f4a: startup date [Mon Feb 28 13:39:12 EST 2022]; root of context hierarchy
                                                                                  Exception in thread "main" java.lang.IllegalStateException: Cannot load configuration class: com.spring.SpringConfig
                                                                                  at org.springframework.context.annotation.ConfigurationClassPostProcessor.enhanceConfigurationClasses(ConfigurationClassPostProcessor.java:403)
                                                                                  at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanFactory(ConfigurationClassPostProcessor.java:249)
                                                                                  at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:281)
                                                                                  at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:125)
                                                                                  at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:686)
                                                                                  at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:524)
                                                                                  at org.springframework.context.annotation.AnnotationConfigApplicationContext.(AnnotationConfigApplicationContext.java:84)
                                                                                  at com.spring.Test.main(Test.java:9)
                                                                                  Caused by: java.lang.ExceptionInInitializerError
                                                                                  at org.springframework.context.annotation.ConfigurationClassEnhancer.newEnhancer(ConfigurationClassEnhancer.java:119)
                                                                                  at org.springframework.context.annotation.ConfigurationClassEnhancer.enhance(ConfigurationClassEnhancer.java:107)
                                                                                  at org.springframework.context.annotation.ConfigurationClassPostProcessor.enhanceConfigurationClasses(ConfigurationClassPostProcessor.java:393)
                                                                                  ... 7 more
                                                                                  Caused by: java.lang.IllegalStateException: Unable to load cache item
                                                                                  at org.springframework.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:79)
                                                                                  at org.springframework.cglib.core.internal.LoadingCache.get(LoadingCache.java:34)
                                                                                  at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:116)
                                                                                  at org.springframework.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:291)
                                                                                  at org.springframework.cglib.core.KeyFactory$Generator.create(KeyFactory.java:221)
                                                                                  at org.springframework.cglib.core.KeyFactory.create(KeyFactory.java:174)
                                                                                  at org.springframework.cglib.core.KeyFactory.create(KeyFactory.java:153)
                                                                                  at org.springframework.cglib.proxy.Enhancer.(Enhancer.java:73)
                                                                                  ... 10 more
                                                                                  Caused by: java.lang.ExceptionInInitializerError
                                                                                  at org.springframework.cglib.core.KeyFactory$Generator.generateClass(KeyFactory.java:243)
                                                                                  at org.springframework.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
                                                                                  at org.springframework.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:329)
                                                                                  at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:93)
                                                                                  at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:91)
                                                                                  at org.springframework.cglib.core.internal.LoadingCache$2.call(LoadingCache.java:54)
                                                                                  at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
                                                                                  at org.springframework.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:61)
                                                                                  ... 17 more
                                                                                  Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @2f8f5f62
                                                                                  at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
                                                                                  at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
                                                                                  at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
                                                                                  at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
                                                                                  at org.springframework.cglib.core.ReflectUtils$1.run(ReflectUtils.java:54)
                                                                                  at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
                                                                                  at org.springframework.cglib.core.ReflectUtils.(ReflectUtils.java:44)
                                                                                  ... 25 more
                                                                                  

                                                                                  ANSWER

                                                                                  Answered 2022-Feb-28 at 19:30

                                                                                  Since Java 9, Java introduced Modules and some frameworks such as Spring, rely on several Reflection behaviour and because of the modularization, some classes had their attribute not accessible through Reflection. The solution would be change the accessibility of these attributes, but it would take forever to do that.

                                                                                  The real solution is to add this VM option when you run your application: --add-opens java.base/java.lang=ALL-UNNAMED

                                                                                  Please refer to this great answer on another post with a similar problem: Answer to similar question

                                                                                  I changed your application to use Spring Boot, have you consider using it? For Spring applications, it is a very handy solution since it abstract many configurations. Here is a link with a detailed example: Spring Boot Example

                                                                                  Source https://stackoverflow.com/questions/71299710

                                                                                  QUESTION

                                                                                  Is it possible to instrument a program that also uses dynamic bytecode generation?
                                                                                  Asked 2022-Feb-26 at 14:39

                                                                                  I am writing a Java instrumentation program that uses the built-in Instrumentation API with Javassist (v3.26.0-GA) to intercept all the method calls in the target program. Also, I have implemented a REST API service inside this program using Java Spark to send requests for starting/stopping instrumentation by adding/removing transformers, and also for fetching intercepted methods during the instrumentation time.

                                                                                  Now, while I was trying to run WebGoat (an open source Spring Boot application) with my Java agent attached from premain, I was not able to intercept all the methods successfully and in the log, there was a NotFoundException being thrown by Javassist.

                                                                                  This error happened for several classes in WebGoat all had a similar common fact that they had something to do with SpringCGLIB. A few of the errors are shown below.

                                                                                  javassist.NotFoundException: org.owasp.webgoat.hijacksession.cas.HijackSessionAuthenticationProvider$$FastClassBySpringCGLIB$$88f1f22d
                                                                                      at javassist.ClassPool.get(ClassPool.java:430)
                                                                                      at com.sparrow.sptracer.core.transformer.AbstractMethodTransformer.transform(AbstractMethodTransformer.java:87)
                                                                                      at java.instrument/java.lang.instrument.ClassFileTransformer.transform(ClassFileTransformer.java:244)
                                                                                      at java.instrument/sun.instrument.TransformerManager.transform(TransformerManager.java:188)
                                                                                      at java.instrument/sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:541)
                                                                                      at java.base/java.lang.ClassLoader.defineClass0(Native Method)
                                                                                      at java.base/java.lang.System$2.defineClass(System.java:2307)
                                                                                      at java.base/java.lang.invoke.MethodHandles$Lookup$ClassDefiner.defineClass(MethodHandles.java:2439)
                                                                                      at java.base/java.lang.invoke.MethodHandles$Lookup$ClassDefiner.defineClass(MethodHandles.java:2416)
                                                                                      at java.base/java.lang.invoke.MethodHandles$Lookup.defineClass(MethodHandles.java:1843)
                                                                                      at java.base/jdk.internal.reflect.GeneratedMethodAccessor44.invoke(Unknown Source)
                                                                                      at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                                                                                      at java.base/java.lang.reflect.Method.invoke(Method.java:568)
                                                                                      at org.springframework.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:507)
                                                                                      at org.springframework.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:363)
                                                                                      at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:110)
                                                                                      at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:108)
                                                                                      at org.springframework.cglib.core.internal.LoadingCache$2.call(LoadingCache.java:54)
                                                                                      at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
                                                                                      at org.springframework.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:61)
                                                                                      at org.springframework.cglib.core.internal.LoadingCache.get(LoadingCache.java:34)
                                                                                      at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:134)
                                                                                      at org.springframework.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:319)
                                                                                      at org.springframework.cglib.reflect.FastClass$Generator.create(FastClass.java:65)
                                                                                      at org.springframework.cglib.proxy.MethodProxy.helper(MethodProxy.java:135)
                                                                                      at org.springframework.cglib.proxy.MethodProxy.init(MethodProxy.java:76)
                                                                                      at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:216)
                                                                                      at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:783)
                                                                                      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
                                                                                      at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)
                                                                                      at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:137)
                                                                                      at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:124)
                                                                                      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
                                                                                      at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)
                                                                                      at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:698)
                                                                                      at org.owasp.webgoat.hijacksession.cas.HijackSessionAuthenticationProvider$$EnhancerBySpringCGLIB$$6ae99c75.authenticate()
                                                                                      at org.owasp.webgoat.hijacksession.HijackSessionAssignment.login(HijackSessionAssignment.java:72)
                                                                                      at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                                                                                      at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
                                                                                      at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                                                                                      at java.base/java.lang.reflect.Method.invoke(Method.java:568)
                                                                                      at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
                                                                                      at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
                                                                                      at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
                                                                                      at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
                                                                                      at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
                                                                                      at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
                                                                                      at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067)
                                                                                      at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)
                                                                                      at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
                                                                                      at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
                                                                                      at javax.servlet.http.HttpServlet.service(HttpServlet.java:517)
                                                                                      at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
                                                                                      at javax.servlet.http.HttpServlet.service(HttpServlet.java:584)
                                                                                      at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:763)
                                                                                      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1651)
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)
                                                                                      at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)
                                                                                      at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
                                                                                      at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122)
                                                                                      at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116)
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
                                                                                      at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)
                                                                                      at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
                                                                                      at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109)
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
                                                                                      at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
                                                                                      at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
                                                                                      at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:219)
                                                                                      at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:213)
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
                                                                                      at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)
                                                                                      at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
                                                                                      at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)
                                                                                      at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)
                                                                                      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
                                                                                      at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)
                                                                                      at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
                                                                                      at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)
                                                                                      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
                                                                                      at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)
                                                                                      at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)
                                                                                      at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)
                                                                                      at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)
                                                                                      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1638)
                                                                                      at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
                                                                                      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
                                                                                      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1638)
                                                                                      at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
                                                                                      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
                                                                                      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1638)
                                                                                      at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)
                                                                                      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
                                                                                      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1638)
                                                                                      at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
                                                                                      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
                                                                                      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1638)
                                                                                      at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:567)
                                                                                      at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
                                                                                      at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:602)
                                                                                      at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
                                                                                      at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
                                                                                      at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1610)
                                                                                      at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
                                                                                      at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1377)
                                                                                      at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
                                                                                      at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:507)
                                                                                      at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1580)
                                                                                      at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
                                                                                      at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1292)
                                                                                      at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
                                                                                      at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
                                                                                      at org.eclipse.jetty.server.Server.handle(Server.java:501)
                                                                                      at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383)
                                                                                      at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:556)
                                                                                      at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375)
                                                                                      at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273)
                                                                                      at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
                                                                                      at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
                                                                                      at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
                                                                                      at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)
                                                                                      at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)
                                                                                      at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)
                                                                                      at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129)
                                                                                      at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:375)
                                                                                      at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806)
                                                                                      at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938)
                                                                                      at java.base/java.lang.Thread.run(Thread.java:833)
                                                                                  
                                                                                  javassist.NotFoundException: org.owasp.webgoat.hijacksession.cas.HijackSessionAuthenticationProvider$$EnhancerBySpringCGLIB$$6ae99c75$$FastClassBySpringCGLIB$$8c045873
                                                                                      at javassist.ClassPool.get(ClassPool.java:430)
                                                                                      at com.sparrow.sptracer.core.transformer.AbstractMethodTransformer.transform(AbstractMethodTransformer.java:87)
                                                                                      at java.instrument/java.lang.instrument.ClassFileTransformer.transform(ClassFileTransformer.java:244)
                                                                                      at java.instrument/sun.instrument.TransformerManager.transform(TransformerManager.java:188)
                                                                                      at java.instrument/sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:541)
                                                                                      at java.base/java.lang.ClassLoader.defineClass0(Native Method)
                                                                                      at java.base/java.lang.System$2.defineClass(System.java:2307)
                                                                                  ... similar stacktrace as above
                                                                                  
                                                                                  javassist.NotFoundException: org.owasp.webgoat.session.UserSessionData$$FastClassBySpringCGLIB$$2b6b54bc
                                                                                      at javassist.ClassPool.get(ClassPool.java:430)
                                                                                      at com.sparrow.sptracer.core.transformer.AbstractMethodTransformer.transform(AbstractMethodTransformer.java:87)
                                                                                      at java.instrument/java.lang.instrument.ClassFileTransformer.transform(ClassFileTransformer.java:244)
                                                                                      at java.instrument/sun.instrument.TransformerManager.transform(TransformerManager.java:188)
                                                                                      at java.instrument/sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:541)
                                                                                      at java.base/java.lang.ClassLoader.defineClass0(Native Method)
                                                                                      at java.base/java.lang.System$2.defineClass(System.java:2307)
                                                                                  ... similar stacktrace as above
                                                                                  
                                                                                  [IMPACTRACER-CORE] ERROR [2021-12-24 10:34:20]: NotFoundException on class 'org/owasp/webgoat/session/UserSessionData$$EnhancerBySpringCGLIB$$bbb61fe2$$FastClassBySpringCGLIB$$34cb52d3': org.owasp.webgoat.session.UserSessionData$$EnhancerBySpringCGLIB$$bbb61fe2$$FastClassBySpringCGLIB$$34cb52d3
                                                                                  javassist.NotFoundException: org.owasp.webgoat.session.UserSessionData$$EnhancerBySpringCGLIB$$bbb61fe2$$FastClassBySpringCGLIB$$34cb52d3
                                                                                      at javassist.ClassPool.get(ClassPool.java:430)
                                                                                      at com.sparrow.sptracer.core.transformer.AbstractMethodTransformer.transform(AbstractMethodTransformer.java:87)
                                                                                      at java.instrument/java.lang.instrument.ClassFileTransformer.transform(ClassFileTransformer.java:244)
                                                                                      at java.instrument/sun.instrument.TransformerManager.transform(TransformerManager.java:188)
                                                                                  ... similar stacktrace as above
                                                                                  

                                                                                  My guess is that WebGoat uses cglib in its Spring Boot environment to dynamically generate bytecode and the corresponding class is not included in the WebGoat's classpath originally, so javassist.ClassPool.get(className) is throwing the error.

                                                                                  My code for creating ClassPool object is as below.

                                                                                  String name = Descriptor.toJavaName(className);
                                                                                  
                                                                                              try {
                                                                                                  ClassPool cp = ClassPool.getDefault();
                                                                                                  cp.childFirstLookup = true;
                                                                                                  cp.appendClassPath(new LoaderClassPath(loader));
                                                                                  
                                                                                                  CtClass cc = cp.get(name);
                                                                                                  Logger.debug("Checking class %s", name);
                                                                                  
                                                                                                  CtMethod[] methods = cc.getDeclaredMethods();
                                                                                                  Logger.debug("Altering %d methods in %s", methods.length, wut);
                                                                                                  for (CtMethod m : methods) {
                                                                                                      // do some code insertion
                                                                                                  }
                                                                                                  bytecode = cc.toBytecode();
                                                                                                  cc.detach();
                                                                                              } catch (NotFoundException e) {
                                                                                                  Logger.error("NotFoundException on class '%s': %s", className, e.getMessage());
                                                                                                  e.printStackTrace();
                                                                                              } catch (CannotCompileException e) {
                                                                                                  Logger.error("Cannot compile class '%s': %s", className, e.getMessage());
                                                                                                  e.printStackTrace(System.out);
                                                                                              } catch (IOException e) {
                                                                                                  Logger.error("IOException while transforming class '%s': %s", className, e.getMessage());
                                                                                              } catch (Exception ex) {
                                                                                                  Logger.error("Generic exception occurred while transforming class '%s': %s", className, ex.getMessage());
                                                                                                  ex.printStackTrace(System.out);
                                                                                              }
                                                                                  

                                                                                  The above errors occured when I tried interacting with the WebGoat application on localhost:8080 tried to send a "start istrumentation" request with a specific id using Java Spark REST API, so whenever I send this request, it triggers inst.addTransformer method to create a new Transformer and adds it to the instrumentation object.

                                                                                  What could be the cause of this error? I assume that WebGoat itself is using some instrumentation which means I am instrumenting an instrumented application and I don't know if that is even possible.

                                                                                  Any insight would be much appreciated.

                                                                                  ANSWER

                                                                                  Answered 2022-Feb-26 at 14:39

                                                                                  From previous comments:

                                                                                  The unfound classes are dynamic proxies which are heavily used by the Spring Framework in order to implement AOP. Spring can use both JDK dynamic interface proxies and CGLIB proxies, the latter of which is what we are seeing here. Maybe you should simply ignore those types of classes. They are in fact created dynamically, hence the name. But they are rather a result of dynamic (sub-)class generation than of bytecode transformation.

                                                                                  Yes, I have considered just ignoring those dynamically generated classes, but the whole point of my application was to capture every single method invocation as a user interacts with the web application (such as clicking on a button, etc). In this case, would it be okay to ignore these types of dynamically generated classes? I want to make sure I do not miss any method calls.

                                                                                  As those classes are just dynamic proxies, they will either forward the calls to the original methods or call some AOP or interceptor logic first/instead. Either way, you would not miss anything essential, those proxies are more like switchboards or routers, the actual show happens somewhere else. I recommend you to simply try in a little playgrounds project with an aspect or two.

                                                                                  You also asked how to detect and ignore dynamic proxies by their names:

                                                                                  • CGLIB proxies: Spring's CGLIB proxies contain substrings like $$FastClassBySpringCGLIB$$ or $$EnhancerBySpringCGLIB$$, followed by 8 characters representing 4 hexadecimal bytes. You could either match with a regular expression of just keep it simple and match the substring BySpringCGLIB$$. If non-Spring CGLIB proxies are also in use somewhere in your application, you would have to watch for other naming patterns. But probably you would get similar errors as before when not filtering them, so you would notice automatically.

                                                                                  • JDK proxies: If your Spring application also happens to use JDK proxies, you can identify them easily using JRE API call Proxy.isProxyClass(Class). Thanks to Johannes Kuhn for his comment.

                                                                                  • JDK proxies (old answer): You can filter class names beginning with $Proxy, usually something like com.sun.proxy.$Proxy2 (the trailing number being different). According to the JDK documentation: "The unqualified name of a proxy class is unspecified. The space of class names that begin with the string "$Proxy" is, however, to be reserved for proxy classes." At least for Oracle and probably OpenJDK, you can match for that naming pattern. If that holds true for all JVMs, is up to you to test, if chances are that in your environments others are being used. I quickly tried with Semeru OpenJ9, and the proxy naming pattern is identical, even the package name com.sun.proxy. Pleasae note that in more recent JDK versions, JDK proxies will have fully qualified names like jdk.proxy2.$Proxy25, so in e.g. Java 16 or 17 you should not rely on package name com.sun.proxy. Either add more cases or limit matching to the leading $Proxy in the simple class name.

                                                                                  Update 2022-02-26: Because there was activity on this question, I decided to add some more information about Spring-specific tools which can determine whether an object (or a class) is an AOP proxy (class) and, more specifically, if it is a CGLIB or JDK proxy:

                                                                                  Take a look at tool class AopUtils and its handy methods

                                                                                  • isAopProxy(Object),
                                                                                  • isCglibProxy(Object),
                                                                                  • isJdkDynamicProxy(Object).

                                                                                  No more String matching, simply ask Spring.

                                                                                  BTW, there is also a method net.sf.cglib.proxy.Proxy.isProxyClass(Class) directly in CGLIB, which is supposed to do the same, but within Spring it does not work, probably because Spring uses CGLIB in a non-canonical way. Because Spring embeds a package-relocated CGLIB in its core, the corresponding method org.springframework.cglib.proxy.Proxy.isProxyClass(Class) yields the same faulty result. So if you are working within Spring, please do not use those methods, better use AopUtils.

                                                                                  Here is some example code for your convenience, showing how to determine Spring AOP proxy types (JDK vs. CGLIB proxies) using AopUtils. See also my answer here for how to configure Spring in order to use both proxy types.

                                                                                  BTW, instead of Javassist you could also use AspectJ for your purpose. It sounds like a pretty typical use case.

                                                                                  Source https://stackoverflow.com/questions/70468909

                                                                                  QUESTION

                                                                                  SEVERE: Exception sending context initialized event to listener instance of class [org.springframework.web.context.ContextLoaderListener]
                                                                                  Asked 2022-Feb-15 at 11:51

                                                                                  so I'm in a new internship position and I was told to modernize a JEE applciation. I've migrated the code in my machine in both .rar , .tar.gz and raw source code , and I sotill get the same problem. so here is the full stack trace of the problem :

                                                                                  Feb 14, 2022 12:16:34 PM org.apache.catalina.startup.VersionLoggerListener log
                                                                                  INFO: Server version name:   Apache Tomcat/7.0.109
                                                                                  Feb 14, 2022 12:16:34 PM org.apache.catalina.startup.VersionLoggerListener log
                                                                                  INFO: Server built:          Apr 22 2021 18:43:38 UTC
                                                                                  Feb 14, 2022 12:16:34 PM org.apache.catalina.startup.VersionLoggerListener log
                                                                                  INFO: Server version number: 7.0.109.0
                                                                                  Feb 14, 2022 12:16:34 PM org.apache.catalina.startup.VersionLoggerListener log
                                                                                  INFO: OS Name:               Linux
                                                                                  Feb 14, 2022 12:16:34 PM org.apache.catalina.startup.VersionLoggerListener log
                                                                                  INFO: OS Version:            5.10.93-1-MANJARO
                                                                                  Feb 14, 2022 12:16:34 PM org.apache.catalina.startup.VersionLoggerListener log
                                                                                  INFO: Architecture:          amd64
                                                                                  Feb 14, 2022 12:16:34 PM org.apache.catalina.startup.VersionLoggerListener log
                                                                                  INFO: Java Home:             /usr/lib/jvm/java-17-openjdk
                                                                                  Feb 14, 2022 12:16:34 PM org.apache.catalina.startup.VersionLoggerListener log
                                                                                  INFO: JVM Version:           17.0.1+12
                                                                                  Feb 14, 2022 12:16:34 PM org.apache.catalina.startup.VersionLoggerListener log
                                                                                  INFO: JVM Vendor:            Oracle Corporation
                                                                                  Feb 14, 2022 12:16:34 PM org.apache.catalina.startup.VersionLoggerListener log
                                                                                  INFO: CATALINA_BASE:         /home/azseza/JAVA/.metadata/.plugins/org.eclipse.wst.server.core/tmp0
                                                                                  Feb 14, 2022 12:16:34 PM org.apache.catalina.startup.VersionLoggerListener log
                                                                                  INFO: CATALINA_HOME:         /home/azseza/apache-tomcat-7.0.47/apache-tomcat-7.0.109
                                                                                  Feb 14, 2022 12:16:34 PM org.apache.catalina.startup.VersionLoggerListener log
                                                                                  INFO: Command line argument: -Dcatalina.base=/home/azseza/JAVA/.metadata/.plugins/org.eclipse.wst.server.core/tmp0
                                                                                  Feb 14, 2022 12:16:34 PM org.apache.catalina.startup.VersionLoggerListener log
                                                                                  INFO: Command line argument: -Dcatalina.home=/home/azseza/apache-tomcat-7.0.47/apache-tomcat-7.0.109
                                                                                  Feb 14, 2022 12:16:34 PM org.apache.catalina.startup.VersionLoggerListener log
                                                                                  INFO: Command line argument: -Dwtp.deploy=/home/azseza/JAVA/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps
                                                                                  Feb 14, 2022 12:16:34 PM org.apache.catalina.startup.VersionLoggerListener log
                                                                                  INFO: Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED
                                                                                  Feb 14, 2022 12:16:34 PM org.apache.catalina.startup.VersionLoggerListener log
                                                                                  INFO: Command line argument: --add-opens=java.base/java.io=ALL-UNNAMED
                                                                                  Feb 14, 2022 12:16:34 PM org.apache.catalina.startup.VersionLoggerListener log
                                                                                  INFO: Command line argument: --add-opens=java.base/java.util=ALL-UNNAMED
                                                                                  Feb 14, 2022 12:16:34 PM org.apache.catalina.startup.VersionLoggerListener log
                                                                                  INFO: Command line argument: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
                                                                                  Feb 14, 2022 12:16:34 PM org.apache.catalina.startup.VersionLoggerListener log
                                                                                  INFO: Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
                                                                                  Feb 14, 2022 12:16:34 PM org.apache.catalina.startup.VersionLoggerListener log
                                                                                  INFO: Command line argument: -Dfile.encoding=UTF-8
                                                                                  Feb 14, 2022 12:16:34 PM org.apache.catalina.startup.VersionLoggerListener log
                                                                                  INFO: Command line argument: -XX:+ShowCodeDetailsInExceptionMessages
                                                                                  Feb 14, 2022 12:16:34 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
                                                                                  INFO: The Apache Tomcat Native library which allows using OpenSSL was not found on the java.library.path: [/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib]
                                                                                  Feb 14, 2022 12:16:34 PM org.apache.coyote.AbstractProtocol init
                                                                                  INFO: Initializing ProtocolHandler ["http-bio-8080"]
                                                                                  Feb 14, 2022 12:16:34 PM org.apache.catalina.startup.Catalina load
                                                                                  INFO: Initialization processed in 415 ms
                                                                                  Feb 14, 2022 12:16:34 PM org.apache.catalina.core.StandardService startInternal
                                                                                  INFO: Starting service [Catalina]
                                                                                  Feb 14, 2022 12:16:34 PM org.apache.catalina.core.StandardEngine startInternal
                                                                                  INFO: Starting Servlet Engine: Apache Tomcat/7.0.109
                                                                                  Feb 14, 2022 12:16:37 PM org.apache.catalina.startup.TldConfig execute
                                                                                  INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
                                                                                  Feb 14, 2022 12:16:37 PM org.apache.catalina.core.StandardContext addApplicationListener
                                                                                  INFO: The listener [com.sun.faces.config.ConfigureListener] is already configured for this context. The duplicate definition has been ignored.
                                                                                  Feb 14, 2022 12:16:37 PM org.apache.catalina.core.ApplicationContext log
                                                                                  INFO: No Spring WebApplicationInitializer types detected on classpath
                                                                                  Feb 14, 2022 12:16:37 PM com.sun.faces.config.ConfigureListener contextInitialized
                                                                                  INFO: Initializing Mojarra 2.2.8 ( 20140814-1418 https://svn.java.net/svn/mojarra~svn/tags/2.2.8@13507) for context '/registre'
                                                                                  Feb 14, 2022 12:16:37 PM com.sun.faces.spi.InjectionProviderFactory createInstance
                                                                                  INFO: JSF1048: PostConstruct/PreDestroy annotations present.  ManagedBeans methods marked with these annotations will have said annotations processed.
                                                                                  SLF4J: Class path contains multiple SLF4J bindings.
                                                                                  SLF4J: Found binding in [jar:file:/home/azseza/JAVA/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/registre/WEB-INF/lib/slf4j-log4j12-1.6.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]
                                                                                  SLF4J: Found binding in [jar:file:/home/azseza/JAVA/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/registre/WEB-INF/lib/slf4j-simple-1.7.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
                                                                                  SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
                                                                                  Feb 14, 2022 12:16:37 PM com.sun.faces.application.annotation.ConverterConfigHandler collect
                                                                                  WARNING: @FacesConverter is using both value and forClass, only value will be applied.
                                                                                  Feb 14, 2022 12:16:38 PM org.primefaces.webapp.PostConstructApplicationEventListener processEvent
                                                                                  INFO: Running on PrimeFaces 6.2
                                                                                  Feb 14, 2022 12:16:38 PM org.primefaces.extensions.application.PostConstructApplicationEventListener processEvent
                                                                                  INFO: Running on PrimeFaces Extensions 6.0.0
                                                                                  Feb 14, 2022 12:16:38 PM org.apache.catalina.core.ApplicationContext log
                                                                                  INFO: Initializing Spring root WebApplicationContext
                                                                                  log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
                                                                                  log4j:WARN Please initialize the log4j system properly.
                                                                                  log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
                                                                                  Feb 14, 2022 12:16:38 PM org.apache.catalina.core.StandardContext listenerStart
                                                                                  SEVERE: Exception sending context initialized event to listener instance of class [org.springframework.web.context.ContextLoaderListener]
                                                                                  java.lang.IllegalArgumentException
                                                                                      at org.springframework.asm.ClassReader.(Unknown Source)
                                                                                      at org.springframework.asm.ClassReader.(Unknown Source)
                                                                                      at org.springframework.asm.ClassReader.(Unknown Source)
                                                                                      at org.springframework.core.type.classreading.SimpleMetadataReader.(SimpleMetadataReader.java:52)
                                                                                      at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:80)
                                                                                      at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:101)
                                                                                      at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:76)
                                                                                      at org.springframework.context.annotation.ConfigurationClassParser.getImports(ConfigurationClassParser.java:298)
                                                                                      at org.springframework.context.annotation.ConfigurationClassParser.getImports(ConfigurationClassParser.java:300)
                                                                                      at org.springframework.context.annotation.ConfigurationClassParser.getImports(ConfigurationClassParser.java:300)
                                                                                      at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:230)
                                                                                      at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:153)
                                                                                      at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:130)
                                                                                      at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:285)
                                                                                      at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:223)
                                                                                      at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:630)
                                                                                      at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:461)
                                                                                      at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:383)
                                                                                      at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283)
                                                                                      at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
                                                                                      at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5128)
                                                                                      at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5653)
                                                                                      at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
                                                                                      at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1689)
                                                                                      at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1679)
                                                                                      at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
                                                                                      at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
                                                                                      at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
                                                                                      at java.base/java.lang.Thread.run(Thread.java:833)
                                                                                  
                                                                                  Feb 14, 2022 12:16:38 PM org.apache.catalina.core.StandardContext startInternal
                                                                                  SEVERE: One or more listeners failed to start. Full details will be found in the appropriate container log file
                                                                                  Feb 14, 2022 12:16:38 PM org.apache.catalina.core.StandardContext startInternal
                                                                                  SEVERE: Context [/registre] startup failed due to previous errors
                                                                                  Feb 14, 2022 12:16:38 PM org.apache.catalina.core.ApplicationContext log
                                                                                  INFO: Closing Spring root WebApplicationContext
                                                                                  Feb 14, 2022 12:16:38 PM org.apache.coyote.AbstractProtocol start
                                                                                  INFO: Starting ProtocolHandler ["http-bio-8080"]
                                                                                  Feb 14, 2022 12:16:38 PM org.apache.catalina.startup.Catalina start
                                                                                  INFO: Server startup in 4851 ms
                                                                                  

                                                                                  The pom.xml file :

                                                                                  
                                                                                      4.0.0
                                                                                      com.bd.csrp.registre
                                                                                      registre
                                                                                      0.0.1-SNAPSHOT
                                                                                      war
                                                                                      registre
                                                                                      ***
                                                                                      http://maven.apache.org
                                                                                      
                                                                                  
                                                                                          3.2.0.RELEASE
                                                                                          1.2.0.Final
                                                                                          4.3.0.Final
                                                                                          1.0.1.Final
                                                                                          5.0.2.Final
                                                                                          2.2.8
                                                                                          2.2.8
                                                                                          6.2
                                                                                          6.0.0
                                                                                          1.0.9
                                                                                          9.4-1200-jdbc4
                                                                                          5.4.0
                                                                                          1.4
                                                                                          1.6.2
                                                                                           3.6.1
                                                                                  
                                                                                          4.11
                                                                                          1.7.0
                                                                                          1.3
                                                                                          3.2
                                                                                          1.8
                                                                                          1.1
                                                                                          1.1
                                                                                          0.4
                                                                                          1.1.1
                                                                                          2.4
                                                                                          1.3
                                                                                          3.3
                                                                                          1.6.1
                                                                                          1.2.16
                                                                                          1.2
                                                                                          3.17
                                                                                          2.1.7
                                                                                          1.2
                                                                                          3.1.0
                                                                                          2.5
                                                                                  
                                                                                          UTF-8
                                                                                      
                                                                                  
                                                                                      
                                                                                          registre
                                                                                          
                                                                                              
                                                                                                  
                                                                                                      maven-eclipse-plugin
                                                                                                      2.8
                                                                                                      
                                                                                                          true
                                                                                                          true
                                                                                                          ${project.build.finalName}
                                                                                                      
                                                                                                  
                                                                                                  
                                                                                                      org.apache.maven.plugins
                                                                                                      maven-compiler-plugin
                                                                                                      3.1
                                                                                                      
                                                                                                          1.7
                                                                                                          1.7
                                                                                                          ISO-8859-1
                                                                                                      
                                                                                                  
                                                                                                  
                                                                                                      org.apache.maven.plugins
                                                                                                      maven-war-plugin
                                                                                                      3.3.2
                                                                                                      
                                                                                                          true
                                                                                                          
                                                                                                              
                                                                                                                  ${basedir}/src/main/webapp/WEB-INF
                                                                                                                  
                                                                                                                      web.xml
                                                                                                                  
                                                                                                                  WEB-INF
                                                                                                                  true
                                                                                                              
                                                                                                          
                                                                                  
                                                                                                      
                                                                                                  
                                                                                              
                                                                                          
                                                                                      
                                                                                  
                                                                                  
                                                                                      
                                                                                          
                                                                                          
                                                                                              xerces
                                                                                              xercesImpl
                                                                                              2.11.0
                                                                                          
                                                                                          
                                                                                                  aopalliance
                                                                                                  aopalliance
                                                                                                  1.0
                                                                                          
                                                                                          
                                                                                              xml-apis
                                                                                              xml-apis
                                                                                              1.4.01
                                                                                          
                                                                                  
                                                                                          
                                                                                              org.mapstruct
                                                                                              mapstruct
                                                                                              ${org.mapstruct.version}
                                                                                          
                                                                                  
                                                                                          
                                                                                          
                                                                                              org.springframework
                                                                                              spring-core
                                                                                              ${spring.version}
                                                                                  
                                                                                          
                                                                                          
                                                                                              org.springframework
                                                                                              spring-context
                                                                                              ${spring.version}
                                                                                  
                                                                                          
                                                                                          
                                                                                              org.springframework
                                                                                              spring-context-support
                                                                                              ${spring.version}
                                                                                          
                                                                                          
                                                                                              org.springframework
                                                                                              spring-web
                                                                                              ${spring.version}
                                                                                          
                                                                                          
                                                                                              org.springframework
                                                                                              spring-tx
                                                                                              ${spring.version}
                                                                                          
                                                                                          
                                                                                              org.springframework
                                                                                              spring-orm
                                                                                              ${spring.version}
                                                                                          
                                                                                          
                                                                                              org.springframework
                                                                                              spring-test
                                                                                              ${spring.version}
                                                                                          
                                                                                          
                                                                                              org.springframework.webflow
                                                                                              spring-faces
                                                                                              2.3.1.RELEASE
                                                                                  
                                                                                          
                                                                                          
                                                                                          org.projectlombok
                                                                                          lombok
                                                                                          1.18.20
                                                                                          provided
                                                                                          
                                                                                  
                                                                                  
                                                                                          
                                                                                          
                                                                                              cglib
                                                                                              cglib
                                                                                              2.2.2
                                                                                          
                                                                                  
                                                                                          
                                                                                          
                                                                                              org.springframework.security
                                                                                              spring-security-core
                                                                                              ${spring.version}
                                                                                          
                                                                                          
                                                                                              org.springframework.security
                                                                                              spring-security-web
                                                                                              ${spring.version}
                                                                                          
                                                                                          
                                                                                              org.springframework.security
                                                                                              spring-security-config
                                                                                              ${spring.version}
                                                                                          
                                                                                          
                                                                                              org.springframework.security
                                                                                              spring-security-acl
                                                                                              ${spring.version}
                                                                                          
                                                                                          
                                                                                              org.springframework.security
                                                                                              spring-security-ldap
                                                                                              ${spring.version}
                                                                                          
                                                                                          
                                                                                              org.springframework.security
                                                                                              spring-security-taglibs
                                                                                              ${spring.version}
                                                                                          
                                                                                  
                                                                                          
                                                                                              org.springframework.security
                                                                                              facelets-taglib-jsf20-spring-3
                                                                                              0.6
                                                                                          
                                                                                  
                                                                                          
                                                                                              org.springframework.ldap
                                                                                              spring-ldap-core
                                                                                              1.3.1.RELEASE
                                                                                  
                                                                                          
                                                                                  
                                                                                  
                                                                                  
                                                                                          
                                                                                          
                                                                                              commons-beanutils
                                                                                              commons-beanutils
                                                                                              ${commons.beanutils.version}
                                                                                          
                                                                                          
                                                                                              commons-codec
                                                                                              commons-codec
                                                                                              ${commons.codec.version}
                                                                                          
                                                                                          
                                                                                              commons-collections
                                                                                              commons-collections
                                                                                              ${commons.collection.version}
                                                                                          
                                                                                          
                                                                                              commons-digester
                                                                                              commons-digester
                                                                                              ${commons.digester.version}
                                                                                          
                                                                                          
                                                                                              commons-pool
                                                                                              commons-pool
                                                                                              ${commons.pool.version}
                                                                                          
                                                                                          
                                                                                              commons-discovery
                                                                                              commons-discovery
                                                                                              ${commons.discovery.version}
                                                                                          
                                                                                          
                                                                                              commons-fileupload
                                                                                              commons-fileupload
                                                                                              ${commons.fileupload.version}
                                                                                          
                                                                                          
                                                                                              commons-io
                                                                                              commons-io
                                                                                              ${commons.io.version}
                                                                                          
                                                                                          
                                                                                              commons-net
                                                                                              commons-net
                                                                                              ${commons.net.version}
                                                                                          
                                                                                  
                                                                                          
                                                                                          
                                                                                              org.hibernate
                                                                                              hibernate-core
                                                                                              ${hibernate.version}
                                                                                          
                                                                                          
                                                                                              org.hibernate
                                                                                              hibernate-entitymanager
                                                                                              ${hibernate.version}
                                                                                          
                                                                                          
                                                                                              org.hibernate
                                                                                              hibernate-validator
                                                                                              ${hibernate-validator.version}
                                                                                          
                                                                                  
                                                                                          
                                                                                          
                                                                                          
                                                                                          
                                                                                          
                                                                                  
                                                                                          
                                                                                          
                                                                                              org.postgresql
                                                                                              postgresql
                                                                                              ${postgresql.version}
                                                                                          
                                                                                  
                                                                                          
                                                                                          
                                                                                              commons-dbcp
                                                                                              commons-dbcp
                                                                                              ${commons.dcp.version}
                                                                                              
                                                                                                  
                                                                                                      javax.sql
                                                                                                      jdbc-stdext
                                                                                                  
                                                                                              
                                                                                          
                                                                                  
                                                                                  
                                                                                          
                                                                                          
                                                                                              org.slf4j
                                                                                              slf4j-api
                                                                                              ${slf4j.version}
                                                                                          
                                                                                          
                                                                                              log4j
                                                                                              log4j
                                                                                              ${log4j.version}
                                                                                          
                                                                                          
                                                                                              org.slf4j
                                                                                              jcl-over-slf4j
                                                                                              1.7.7
                                                                                          
                                                                                  
                                                                                  
                                                                                          
                                                                                          
                                                                                              javax.mail
                                                                                              mail
                                                                                              ${java.mail.version}
                                                                                          
                                                                                          
                                                                                              org.apache.velocity
                                                                                              velocity
                                                                                              ${velocity.version}
                                                                                          
                                                                                  
                                                                                          
                                                                                          
                                                                                              net.sf.dozer
                                                                                              dozer
                                                                                              ${dozer.version}
                                                                                          
                                                                                           
                                                                                              org.ehcache
                                                                                              ehcache
                                                                                              ${ehcache-version}
                                                                                          
                                                                                          
                                                                                              javax.cache
                                                                                              cache-api
                                                                                              1.1.1
                                                                                          
                                                                                  
                                                                                  
                                                                                          
                                                                                          
                                                                                          
                                                                                              org.apache.poi
                                                                                              poi
                                                                                              ${apache.poi.version}
                                                                                          
                                                                                          
                                                                                              org.apache.poi
                                                                                              poi-ooxml
                                                                                              ${apache.poi.version}
                                                                                          
                                                                                          
                                                                                          
                                                                                              com.lowagie
                                                                                              itext
                                                                                              ${itext.version}
                                                                                          
                                                                                          
                                                                                              com.myjeeva.poi
                                                                                              excelReader
                                                                                              ${excel.reader.version}
                                                                                          
                                                                                          
                                                                                          
                                                                                              net.sf.jasperreports
                                                                                              jasperreports
                                                                                              5.2.0
                                                                                          
                                                                                          
                                                                                              net.sf.jasperreports
                                                                                              jasperreports-fonts
                                                                                              4.0.0
                                                                                          
                                                                                          
                                                                                          
                                                                                              org.codehaus.groovy
                                                                                              groovy-all
                                                                                              1.7.5
                                                                                          
                                                                                  
                                                                                          
                                                                                              net.sourceforge.barbecue
                                                                                              barbecue
                                                                                              1.5-beta1
                                                                                          
                                                                                  
                                                                                          
                                                                                          
                                                                                              junit
                                                                                              junit
                                                                                              ${junit.version}
                                                                                              test
                                                                                          
                                                                                          
                                                                                              org.mockito
                                                                                              mockito-all
                                                                                              1.8.4
                                                                                              test
                                                                                          
                                                                                  
                                                                                  
                                                                                  
                                                                                  
                                                                                          
                                                                                          
                                                                                              javax.servlet
                                                                                              javax.servlet-api
                                                                                              ${servlet-api.version}
                                                                                              provided
                                                                                          
                                                                                          
                                                                                              javax.servlet
                                                                                              jstl
                                                                                              ${jstl.version}
                                                                                          
                                                                                          
                                                                                              javax.servlet
                                                                                              servlet-api
                                                                                              ${servlet.api.version}
                                                                                              provided
                                                                                          
                                                                                          
                                                                                          
                                                                                              com.sun.faces
                                                                                              jsf-api
                                                                                              ${jsf-api.version}
                                                                                          
                                                                                          
                                                                                              com.sun.faces
                                                                                              jsf-impl
                                                                                              ${jsf-impl.version}
                                                                                          
                                                                                  
                                                                                          
                                                                                          
                                                                                              org.primefaces
                                                                                              primefaces
                                                                                              ${primefaces.version}
                                                                                          
                                                                                          
                                                                                              org.primefaces.themes
                                                                                              all-themes
                                                                                              ${primefaces.themes.version}
                                                                                          
                                                                                          
                                                                                              org.primefaces.extensions
                                                                                              primefaces-extensions
                                                                                              ${primefaces-extensions.version}
                                                                                          
                                                                                          
                                                                                              org.primefaces.extensions
                                                                                              resources-ckeditor
                                                                                              ${primefaces-extensions.version}
                                                                                          
                                                                                          
                                                                                              org.primefaces.extensions
                                                                                              resources-codemirror
                                                                                              ${primefaces-extensions.version}
                                                                                          
                                                                                  
                                                                                      
                                                                                  
                                                                                  
                                                                                      
                                                                                  
                                                                                          
                                                                                              developpement
                                                                                              
                                                                                                  true
                                                                                              
                                                                                          
                                                                                  
                                                                                      
                                                                                      
                                                                                          
                                                                                              prime-repo
                                                                                              PrimeFaces Maven Repository
                                                                                              http://repository.primefaces.org
                                                                                          
                                                                                  
                                                                                          
                                                                                              datapipeline-mvn-repo
                                                                                              https://raw.github.com/fredtucs/mvnrepository/mvn-repo/
                                                                                              
                                                                                                  true
                                                                                                  always
                                                                                              
                                                                                          
                                                                                          
                                                                                              org.springframework.security.taglibs.facelets
                                                                                              http://spring-security-facelets-taglib.googlecode.com/svn/repo/
                                                                                          
                                                                                      
                                                                                  
                                                                                  
                                                                                  

                                                                                  And finaly the web.xml

                                                                                  
                                                                                  
                                                                                    
                                                                                      Faces Servlet
                                                                                      javax.faces.webapp.FacesServlet
                                                                                      1
                                                                                    
                                                                                    
                                                                                      Faces Servlet
                                                                                      /faces/*
                                                                                    
                                                                                  
                                                                                  

                                                                                  Please help me , my JEE heros.

                                                                                  ANSWER

                                                                                  Answered 2022-Feb-15 at 11:51

                                                                                  Spring 3.2.0.RELEASE uses asm 4.0, which does not support Java 8 or higher.

                                                                                  Since Java 7 is not supported any more, you should upgrade Spring to the latest patch release:

                                                                                  3.2.18.RELEASE
                                                                                  

                                                                                  This version uses asm 5.0.4, which supports Java 8 (but not later versions).

                                                                                  Upgrading in the same minor version is theoretically safe, so you should not experience too many problems.

                                                                                  Source https://stackoverflow.com/questions/71111090

                                                                                  QUESTION

                                                                                  How to fetch calendar events for a user using Microsoft Graph API with java
                                                                                  Asked 2022-Jan-24 at 12:24

                                                                                  I wish to connect a personal Microsoft account(xyz@hotmail.com) to an App and then fetch the calendar events for that account using the App.

                                                                                  I have registered the app in Aure portal and I am able to fetch the events using Postman. This is what my postman configuration looks like:

                                                                                  URL: https://graph.microsoft.com/v1.0/me/calendars
                                                                                  Call back URL: https://oauth.pstmn.io/v1/browser-callback
                                                                                  AUTH URL: https://login.microsoftonline.com/consumers/oauth2/v2.0/authorize
                                                                                  Access Token URL: https://login.microsoftonline.com/consumers/oauth2/v2.0/token
                                                                                  Client ID: 
                                                                                  Client Secret: 
                                                                                  Scope: https://graph.microsoft.com/.default
                                                                                  Client Authentication: "Send as Basic Auth Header"
                                                                                  

                                                                                  How do I replicate the above using Java? See this tutorail: https://docs.microsoft.com/en-us/graph/api/calendar-list-events?view=graph-rest-1.0&tabs=java

                                                                                  Check this code from above link:

                                                                                  GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
                                                                                  
                                                                                  EventCollectionPage events = graphClient.me().calendar().events()
                                                                                      .buildRequest()
                                                                                      .filter("startsWith(subject,'All')")
                                                                                      .get();
                                                                                  
                                                                                  //Read the SDK documentation for details on how to add the SDK to your project and create an authProvider instance.
                                                                                  

                                                                                  Here is the link for creating an auth provider: https://docs.microsoft.com/en-us/graph/sdks/choose-authentication-providers?tabs=Java

                                                                                  Which provider should I use?

                                                                                  1. Authorization code provider
                                                                                  2. Client credentials provider
                                                                                  3. On-behalf-of provider
                                                                                  4. Device code provider etc etc

                                                                                  I am not able to get any of the above to work -- I keep getting too many errors in my java code.

                                                                                  I am able to implement OAuth flow and have access token and refresh token. How do I write my Java code to get calendar events?

                                                                                  EDIT 1

                                                                                  I have given my code for authentication provider below:

                                                                                  public class GraphAuthenticationProvider extends BaseAuthenticationProvider {
                                                                                      private String accessToken;
                                                                                      
                                                                                      public GraphAuthenticationProvider(String accessToken) {
                                                                                          this.accessToken = accessToken;
                                                                                      }
                                                                                      
                                                                                      @Override
                                                                                      public CompletableFuture getAuthorizationTokenAsync(URL requestUrl) {
                                                                                           return CompletableFuture.completedFuture(accessToken);
                                                                                      }
                                                                                  }
                                                                                  

                                                                                  This is how I use it:

                                                                                  final GraphAuthenticationProvider graphAuthenticationProvider = new GraphAuthenticationProvider(accessCode);
                                                                                          
                                                                                          final GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider(graphAuthenticationProvider).buildClient();
                                                                                          EventCollectionPage events = graphClient.me().calendar().events().buildRequest().get();
                                                                                  

                                                                                  This is the error I get:

                                                                                  2021-12-15 12:09:10.941 ERROR 14456 --- [-nio-443-exec-1] global                                   : CoreHttpProvider[sendRequestInternal] - 406Graph service exception Error code: InvalidMsaTicket
                                                                                  2021-12-15 12:09:10.941 ERROR 14456 --- [-nio-443-exec-1] global                                   : CoreHttpProvider[sendRequestInternal] - 406Error message: ErrorCode: 'PP_E_RPS_REASON_OFFERACTIONS_INVALID'. Message: ''
                                                                                  2021-12-15 12:09:10.942 ERROR 14456 --- [-nio-443-exec-1] global                                   : CoreHttpProvider[sendRequestInternal] - 406
                                                                                  2021-12-15 12:09:10.943 ERROR 14456 --- [-nio-443-exec-1] global                                   : CoreHttpProvider[sendRequestInternal] - 406GET https://graph.microsoft.com/v1.0/me/calendar/events
                                                                                  2021-12-15 12:09:10.944 ERROR 14456 --- [-nio-443-exec-1] global                                   : CoreHttpProvider[sendRequestInternal] - 406SdkVersion : graph-java/v5.8.0
                                                                                  2021-12-15 12:09:10.945 ERROR 14456 --- [-nio-443-exec-1] global                                   : CoreHttpProvider[sendRequestInternal] - 406
                                                                                  2021-12-15 12:09:10.947 ERROR 14456 --- [-nio-443-exec-1] global                                   : CoreHttpProvider[sendRequestInternal] - 406
                                                                                  2021-12-15 12:09:10.949 ERROR 14456 --- [-nio-443-exec-1] global                                   : CoreHttpProvider[sendRequestInternal] - 406401 : Unauthorized
                                                                                  2021-12-15 12:09:10.950 ERROR 14456 --- [-nio-443-exec-1] global                                   : CoreHttpProvider[sendRequestInternal] - 406[...]
                                                                                  2021-12-15 12:09:10.951 ERROR 14456 --- [-nio-443-exec-1] global                                   : CoreHttpProvider[sendRequestInternal] - 406
                                                                                  2021-12-15 12:09:10.951 ERROR 14456 --- [-nio-443-exec-1] global                                   : CoreHttpProvider[sendRequestInternal] - 406[Some information was truncated for brevity, enable debug logging for more details]
                                                                                  2021-12-15 12:09:10.951 ERROR 14456 --- [-nio-443-exec-1] global                                   : Throwable detail: com.microsoft.graph.http.GraphServiceException: Error code: InvalidMsaTicket
                                                                                  Error message: ErrorCode: 'PP_E_RPS_REASON_OFFERACTIONS_INVALID'. Message: ''
                                                                                  
                                                                                  GET https://graph.microsoft.com/v1.0/me/calendar/events
                                                                                  SdkVersion : graph-java/v5.8.0
                                                                                  
                                                                                  
                                                                                  401 : Unauthorized
                                                                                  [...]
                                                                                  
                                                                                  [Some information was truncated for brevity, enable debug logging for more details]
                                                                                  2021-12-15 12:09:10.965 ERROR 14456 --- [-nio-443-exec-1] x.c.controllers.AuthorizationController  : Exception occurred in method: fetchAndStoreMicrosoftRefreshToken
                                                                                  
                                                                                  com.microsoft.graph.http.GraphServiceException: Error code: InvalidMsaTicket
                                                                                  Error message: ErrorCode: 'PP_E_RPS_REASON_OFFERACTIONS_INVALID'. Message: ''
                                                                                  
                                                                                  GET https://graph.microsoft.com/v1.0/me/calendar/events
                                                                                  SdkVersion : graph-java/v5.8.0
                                                                                  
                                                                                  
                                                                                  401 : Unauthorized
                                                                                  [...]
                                                                                  
                                                                                  [Some information was truncated for brevity, enable debug logging for more details]
                                                                                      at com.microsoft.graph.http.GraphServiceException.createFromResponse(GraphServiceException.java:419) ~[microsoft-graph-core-2.0.10.jar:na]
                                                                                      at com.microsoft.graph.http.GraphServiceException.createFromResponse(GraphServiceException.java:378) ~[microsoft-graph-core-2.0.10.jar:na]
                                                                                      at com.microsoft.graph.http.CoreHttpProvider.handleErrorResponse(CoreHttpProvider.java:511) ~[microsoft-graph-core-2.0.10.jar:na]
                                                                                      at com.microsoft.graph.http.CoreHttpProvider.processResponse(CoreHttpProvider.java:440) ~[microsoft-graph-core-2.0.10.jar:na]
                                                                                      at com.microsoft.graph.http.CoreHttpProvider.sendRequestInternal(CoreHttpProvider.java:406) ~[microsoft-graph-core-2.0.10.jar:na]
                                                                                      at com.microsoft.graph.http.CoreHttpProvider.send(CoreHttpProvider.java:223) ~[microsoft-graph-core-2.0.10.jar:na]
                                                                                      at com.microsoft.graph.http.CoreHttpProvider.send(CoreHttpProvider.java:200) ~[microsoft-graph-core-2.0.10.jar:na]
                                                                                      at com.microsoft.graph.http.BaseCollectionRequest.send(BaseCollectionRequest.java:102) ~[microsoft-graph-core-2.0.10.jar:na]
                                                                                      at com.microsoft.graph.http.BaseEntityCollectionRequest.get(BaseEntityCollectionRequest.java:78) ~[microsoft-graph-core-2.0.10.jar:na]
                                                                                      at xyz.calendo.services.EventServices.createEvent(EventServices.java:30) ~[main/:na]
                                                                                      at xyz.calendo.services.UserServices.fetchAndStoreMicrosoftRefreshToken(UserServices.java:160) ~[main/:na]
                                                                                      at xyz.calendo.services.UserServices$$FastClassBySpringCGLIB$$aa8f5a38.invoke() ~[main/:na]
                                                                                      at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.12.jar:5.3.12]
                                                                                      at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689) ~[spring-aop-5.3.12.jar:5.3.12]
                                                                                      at xyz.calendo.services.UserServices$$EnhancerBySpringCGLIB$$a4a0f13c.fetchAndStoreMicrosoftRefreshToken() ~[main/:na]
                                                                                      at xyz.calendo.controllers.AuthorizationController.microsoftAuthorizationResponse(AuthorizationController.java:85) ~[main/:na]
                                                                                      at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
                                                                                      at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
                                                                                      at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
                                                                                      at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
                                                                                      at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.12.jar:5.3.12]
                                                                                      at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.12.jar:5.3.12]
                                                                                      at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.12.jar:5.3.12]
                                                                                      at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.12.jar:5.3.12]
                                                                                      at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.12.jar:5.3.12]
                                                                                      at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.12.jar:5.3.12]
                                                                                      at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067) ~[spring-webmvc-5.3.12.jar:5.3.12]
                                                                                      at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) ~[spring-webmvc-5.3.12.jar:5.3.12]
                                                                                      at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.12.jar:5.3.12]
                                                                                      at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.12.jar:5.3.12]
                                                                                      at javax.servlet.http.HttpServlet.service(HttpServlet.java:655) ~[tomcat-embed-core-9.0.54.jar:4.0.FR]
                                                                                      at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.12.jar:5.3.12]
                                                                                      at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[tomcat-embed-core-9.0.54.jar:4.0.FR]
                                                                                      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
                                                                                      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
                                                                                      at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.54.jar:9.0.54]
                                                                                      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
                                                                                      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:121) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:115) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:117) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.12.jar:5.3.12]
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.12.jar:5.3.12]
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.12.jar:5.3.12]
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183) ~[spring-security-web-5.5.3.jar:5.5.3]
                                                                                      at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358) ~[spring-web-5.3.12.jar:5.3.12]
                                                                                      at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271) ~[spring-web-5.3.12.jar:5.3.12]
                                                                                      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
                                                                                      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
                                                                                      at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.12.jar:5.3.12]
                                                                                      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.12.jar:5.3.12]
                                                                                      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
                                                                                      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
                                                                                      at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.12.jar:5.3.12]
                                                                                      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.12.jar:5.3.12]
                                                                                      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
                                                                                      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
                                                                                      at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.12.jar:5.3.12]
                                                                                      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.12.jar:5.3.12]
                                                                                      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
                                                                                      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
                                                                                      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
                                                                                      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
                                                                                      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:659) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
                                                                                      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
                                                                                      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
                                                                                      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
                                                                                      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
                                                                                      at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
                                                                                      at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
                                                                                      at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:895) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
                                                                                      at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1722) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
                                                                                      at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
                                                                                      at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
                                                                                      at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
                                                                                      at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
                                                                                      at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]
                                                                                  

                                                                                  ANSWER

                                                                                  Answered 2022-Jan-24 at 12:24

                                                                                  My access token was missing a scope called: "Calendars.ReadWrite". This is how that scope was supposed to be added.

                                                                                  AuthorizationCode authorizationCode = new AuthorizationCode(httpServletRequest.getParameter("code"));
                                                                                          String currentUri = httpServletRequest.getRequestURL().toString();
                                                                                          
                                                                                          IAuthenticationResult result;
                                                                                          ConfidentialClientApplication app;
                                                                                          try {
                                                                                              app = createClientApplication();
                                                                                  
                                                                                              String authCode = authorizationCode.getValue();
                                                                                              Set scopes = new HashSet();
                                                                                              scopes.add("Calendars.ReadWrite"); //see this line
                                                                                              
                                                                                              AuthorizationCodeParameters parameters = AuthorizationCodeParameters.builder(authCode, new URI(currentUri)).scopes(scopes)
                                                                                                      .build();
                                                                                              
                                                                                              Future future = app.acquireToken(parameters);
                                                                                              result = future.get();
                                                                                          } catch (ExecutionException e) {
                                                                                              throw e.getCause();
                                                                                          }
                                                                                  
                                                                                          if (result == null) {
                                                                                              throw new ServiceUnavailableException("authentication result was null");
                                                                                          }
                                                                                  
                                                                                          return result;
                                                                                  

                                                                                  And then, access token was supposed to be requested like this:

                                                                                  JWTClaimsSet claims = JWTParser.parse(result.idToken()).getJWTClaimsSet();
                                                                                  String accessToken = result.accessToken();
                                                                                  

                                                                                  Source https://stackoverflow.com/questions/70355146

                                                                                  QUESTION

                                                                                  How to resolve ClassCastException in MultiResourceItemReader Spring Batch
                                                                                  Asked 2022-Jan-19 at 03:33

                                                                                  I'm reading multiple files from the S3 bucket using MultiResourceItemReader, I'm getting ClassCastException before executing the myReader() method, Something wrong with MultiResourceItemReader not sure what's going wrong here.

                                                                                  Please find my code below:

                                                                                                  @Bean
                                                                                                  public MultiResourceItemReader multiResourceReader()
                                                                                                  {
                                                                                                      String bucket = "mybucket;
                                                                                                      String key = "/myfiles";
                                                                                                  
                                                                                                      List resourceList = s3Client.getFiles(bucket, key);
                                                                                                      List inputStreamResourceList = new ArrayList<>();
                                                                                                      for (InputStream s: resourceList) {
                                                                                                          inputStreamResourceList.add(new InputStreamResource(s));
                                                                                                      }
                                                                                              
                                                                                              Resource[] resources = inputStreamResourceList.toArray(new InputStreamResource[inputStreamResourceList.size()]);
                                                                                          //InputStreamResource[] resources = inputStreamResourceList.toArray(new InputStreamResource[inputStreamResourceList.size()]);
                                                                                              
                                                                                              // I'm getting all the stream content - I verified my stream is not null
                                                                                                      for (int i = 0; i < resources.length; i++) {
                                                                                                          try {
                                                                                                              InputStream s  = resources[i].getInputStream();
                                                                                                              String result = IOUtils.toString(s, StandardCharsets.UTF_8);
                                                                                                              System.out.println(result);
                                                                                                          } catch (IOException e) {
                                                                                                              e.printStackTrace();
                                                                                                          }
                                                                                                      }
                                                                                              
                                                                                                      MultiResourceItemReader resourceItemReader = new MultiResourceItemReader<>();
                                                                                                      resourceItemReader.setResources(resources);
                                                                                                      resourceItemReader.setDelegate(myReader());
                                                                                                      
                                                                                      resourceItemReader.setDelegate((ResourceAwareItemReaderItemStream) new CustomComparator()); 
                                                                                                      return resourceItemReader;
                                                                                                  }
                                                                                          
                                                                                          
                                                                                            
                                                                                  

                                                                                  Exception:

                                                                                  Caused by: java.lang.ClassCastException: class CustomComparator cannot be cast to class org.springframework.batch.item.file.ResourceAwareItemReaderItemStream (CustomComparator and org.springframework.batch.item.file.ResourceAwareItemReaderItemStream are in unnamed module of loader org.springframework.boot.loader.LaunchedURLClassLoader @cc285f4)
                                                                                          at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)
                                                                                          at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331)
                                                                                          at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                                                                                          at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
                                                                                          at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                                                                                          at java.base/java.lang.reflect.Method.invoke(Method.java:566)
                                                                                          at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
                                                                                          ... 65 common frames omitted
                                                                                  

                                                                                  Can someone please help me to resolve this issue. Appreciated your help in advance. Thanks.

                                                                                  ANSWER

                                                                                  Answered 2022-Jan-17 at 18:04

                                                                                  The reason you see the NullPointerException is due to the default comparator used by the MultiResourceItemReader to sort the resources after loading them.

                                                                                  The default compare behavior calls the getFilename() method of the InputStreamResource.

                                                                                  Refer - https://github.com/spring-projects/spring-batch/blob/115c3022147692155d45e23cdd5cef84895bf9f5/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/MultiResourceItemReader.java#L82

                                                                                  But the InputStreamResource just inherits the getFileName() method from its parent AbstractResource, which just returns null. https://github.com/spring-projects/spring-framework/blob/316e84f04f3dbec3ea5ab8563cc920fb21f49749/spring-core/src/main/java/org/springframework/core/io/AbstractResource.java#L220

                                                                                  The solution is to provide a custom comparator for the MultiResourceItemReader. Here is a simple example, assuming you do not want to sort the resources in a specific way before processing:

                                                                                  public class CustomComparator implements Comparator{
                                                                                  
                                                                                          @Override
                                                                                          public int compare(InputStream is1, InputStream is2) {
                                                                                         //comparing based on last modified time
                                                                                              return Long.compare(is1.hashCode(),is2.hashCode());
                                                                                     }
                                                                                  }
                                                                                  
                                                                                  MultiResourceItemReader resourceItemReader = new MultiResourceItemReader<>();
                                                                                  resourceItemReader.setResources(resources);
                                                                                  resourceItemReader.setDelegate(myReader());
                                                                                  //UPDATED with correction - set custom Comparator
                                                                                  resourceItemReader.setComparator(new CustomComparator());
                                                                                  

                                                                                  Refer this answer for how a Comparator is used by Spring Batch MultiResourceItemReader.

                                                                                  File processing order with Spring Batch

                                                                                  Source https://stackoverflow.com/questions/70736446

                                                                                  QUESTION

                                                                                  spring-aop On apple silicon (M1) : Illegal method name
                                                                                  Asked 2022-Jan-12 at 00:35

                                                                                  My working project uses kotlin + spring-boot.

                                                                                  I found this issue when I try to run a test case having space like should success WHEN setting key is api updatable on the MacBook apple-m1 machine.

                                                                                  Example

                                                                                  @Test
                                                                                  @Transactional
                                                                                  fun `should success when setting key is api updatable`()
                                                                                  

                                                                                  Then JVM throw Exception that contains stack trace looks like this

                                                                                  Caused by: java.lang.ClassFormatError: Illegal method name "should success when setting key is api updatable" in class com/xxx/xxx/web/rest/CompanySettingResourceIntTest$$EnhancerBySpringCGLIB$$f0902682
                                                                                  

                                                                                  This happens on my MacBook m1 machine but never happens on the intel machine.

                                                                                  I try to investigate this issue, then I found when using @Transactional on the method in bean, spring-aop will create a proxy class by using method java.lang.ClassLoader.defineClass.

                                                                                  I have a lot of methods that look like this and it's easy to read. Can I use a method name that contains space run in the m1 machine, How do I fix it?

                                                                                  Thank you.

                                                                                  Environment

                                                                                  • JDK version 1.8 (AArch64)
                                                                                  • Spring boot 1.5.16
                                                                                  • JUnit 4

                                                                                  (I try to POC using spring-boot2+JUnit5 test-case name contains space is fine. But a method in beans throws the Illegal method name too.)

                                                                                  JUnit log (Run test)

                                                                                  
                                                                                  Could not generate CGLIB subclass of class com.xxx.xxx.web.rest.CompanySettingResourceIntTest: Common causes of this problem include using a final class or a non-visible class; nested exception is org.springframework.cglib.core.CodeGenerationException: java.lang.reflect.InvocationTargetException-->null
                                                                                  org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class com.xxx.xxx.web.rest.CompanySettingResourceIntTest: Common causes of this problem include using a final class or a non-visible class; nested exception is org.springframework.cglib.core.CodeGenerationException: java.lang.reflect.InvocationTargetException-->null
                                                                                      at org.springframework.aop.framework.CglibAopProxy.getProxy(CglibAopProxy.java:204)
                                                                                      at org.springframework.aop.framework.ProxyFactory.getProxy(ProxyFactory.java:109)
                                                                                      at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.createProxy(AbstractAutoProxyCreator.java:466)
                                                                                      at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.wrapIfNecessary(AbstractAutoProxyCreator.java:349)
                                                                                      at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:298)
                                                                                      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:421)
                                                                                      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1635)
                                                                                      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:398)
                                                                                      at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:119)
                                                                                      at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83)
                                                                                      at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance(SpringBootDependencyInjectionTestExecutionListener.java:44)
                                                                                      at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:230)
                                                                                      at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:228)
                                                                                      at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:287)
                                                                                      at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
                                                                                      at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:289)
                                                                                      at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:247)
                                                                                      at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94)
                                                                                      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.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
                                                                                      at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
                                                                                      at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
                                                                                      at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)
                                                                                      at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
                                                                                      at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
                                                                                      at org.junit.vintage.engine.execution.RunnerExecutor.execute(RunnerExecutor.java:40)
                                                                                      at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
                                                                                      at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
                                                                                      at java.util.Iterator.forEachRemaining(Iterator.java:116)
                                                                                      at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
                                                                                      at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
                                                                                      at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
                                                                                      at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
                                                                                      at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
                                                                                      at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
                                                                                      at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:485)
                                                                                      at org.junit.vintage.engine.VintageTestEngine.executeAllChildren(VintageTestEngine.java:80)
                                                                                      at org.junit.vintage.engine.VintageTestEngine.execute(VintageTestEngine.java:71)
                                                                                      at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:170)
                                                                                      at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:154)
                                                                                      at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:90)
                                                                                      at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:92)
                                                                                      at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$100(JUnitPlatformTestClassProcessor.java:77)
                                                                                      at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:73)
                                                                                      at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
                                                                                      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.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
                                                                                      at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
                                                                                      at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
                                                                                      at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
                                                                                      at com.sun.proxy.$Proxy2.stop(Unknown Source)
                                                                                      at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:131)
                                                                                      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.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
                                                                                      at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
                                                                                      at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:155)
                                                                                      at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:137)
                                                                                      at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
                                                                                      at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
                                                                                      at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
                                                                                      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
                                                                                      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
                                                                                      at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
                                                                                      at java.lang.Thread.run(Thread.java:748)
                                                                                  Caused by: org.springframework.cglib.core.CodeGenerationException: java.lang.reflect.InvocationTargetException-->null
                                                                                      at org.springframework.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:345)
                                                                                      at org.springframework.cglib.proxy.Enhancer.generate(Enhancer.java:492)
                                                                                      at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:93)
                                                                                      at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:91)
                                                                                      at org.springframework.cglib.core.internal.LoadingCache$2.call(LoadingCache.java:54)
                                                                                      at java.util.concurrent.FutureTask.run(FutureTask.java:266)
                                                                                      at org.springframework.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:61)
                                                                                      at org.springframework.cglib.core.internal.LoadingCache.get(LoadingCache.java:34)
                                                                                      at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:116)
                                                                                      at org.springframework.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:291)
                                                                                      at org.springframework.cglib.proxy.Enhancer.createHelper(Enhancer.java:480)
                                                                                      at org.springframework.cglib.proxy.Enhancer.createClass(Enhancer.java:337)
                                                                                      at org.springframework.aop.framework.ObjenesisCglibAopProxy.createProxyClassAndInstance(ObjenesisCglibAopProxy.java:55)
                                                                                      at org.springframework.aop.framework.CglibAopProxy.getProxy(CglibAopProxy.java:201)
                                                                                      ... 73 more
                                                                                  Caused by: java.lang.reflect.InvocationTargetException
                                                                                      at sun.reflect.GeneratedMethodAccessor82.invoke(Unknown Source)
                                                                                      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                                                                                      at java.lang.reflect.Method.invoke(Method.java:498)
                                                                                      at org.springframework.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:459)
                                                                                      at org.springframework.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:336)
                                                                                      ... 86 more
                                                                                  Caused by: java.lang.ClassFormatError: Illegal method name "should success when setting key is api updatable" in class com/xxx/xxx/web/rest/CompanySettingResourceIntTest$$EnhancerBySpringCGLIB$$f0902682
                                                                                      at java.lang.ClassLoader.defineClass1(Native Method)
                                                                                      at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
                                                                                      ... 91 more
                                                                                  
                                                                                  

                                                                                  ANSWER

                                                                                  Answered 2022-Jan-12 at 00:35

                                                                                  You might be hitting Spring issue #21674 which was fixed in Spring 5.1. You might want to upgrade, if that is an option. It seems there is a fix which ignores those kinds of methods. If that is OK for you or not, I do not know.

                                                                                  Some background information: Your target method is transactional, so Spring tries to create a CGLIB proxy for it. I quickly verified in a simple Spock (Groovy) test that CGLIB seems to be unable to handle methods containing spaces correctly -probably because it is simply unaware of languages like Groovy and Kotlin which allow such things. Here is a proof of concept. I used Groovy and Spock, because I am lazy and did not want to set up a Kotlin project. But I am expecting the result to be identical.

                                                                                  Java class under test:

                                                                                  package de.scrum_master.stackoverflow.q70654015;
                                                                                  
                                                                                  public class SampleJava {
                                                                                    public String greet(String input) {
                                                                                      return "Hello " + input + "!";
                                                                                    }
                                                                                  }
                                                                                  

                                                                                  Groovy class under test:

                                                                                  package de.scrum_master.stackoverflow.q70654015
                                                                                  
                                                                                  class SampleGroovy {
                                                                                    String "say hello to"(String input) {
                                                                                      "Hello $input!"
                                                                                    }
                                                                                  }
                                                                                  

                                                                                  Spock test creating CGLIB proxies:

                                                                                  package de.scrum_master.stackoverflow.q70654015
                                                                                  
                                                                                  import net.sf.cglib.proxy.Enhancer
                                                                                  import net.sf.cglib.proxy.MethodInterceptor
                                                                                  import spock.lang.Specification
                                                                                  
                                                                                  class CGLIBProxyTest extends Specification {
                                                                                    def "create CGLIB proxy for Java class"() {
                                                                                      given:
                                                                                      Enhancer enhancer = new Enhancer()
                                                                                      enhancer.superclass = SampleJava
                                                                                      enhancer.callback = { obj, method, args, proxy ->
                                                                                        method.getDeclaringClass() != Object.class && method.getReturnType() == String.class
                                                                                          ? "Hello cglib!"
                                                                                          : proxy.invokeSuper(obj, args)
                                                                                      } as MethodInterceptor
                                                                                  
                                                                                      when:
                                                                                      SampleJava proxy = enhancer.create()
                                                                                  
                                                                                      then:
                                                                                      proxy.greet("world") == "Hello cglib!"
                                                                                    }
                                                                                  
                                                                                    def "create CGLIB proxy for Groovy class with spaces in method name"() {
                                                                                      given:
                                                                                      Enhancer enhancer = new Enhancer()
                                                                                      enhancer.superclass = SampleGroovy
                                                                                      enhancer.callback = { obj, method, args, proxy ->
                                                                                        method.getDeclaringClass() != Object.class && method.getReturnType() == String.class
                                                                                          ? "Hello cglib!"
                                                                                          : proxy.invokeSuper(obj, args)
                                                                                      } as MethodInterceptor
                                                                                  
                                                                                      when:
                                                                                      SampleGroovy proxy = enhancer.create()
                                                                                  
                                                                                      then:
                                                                                      proxy."say hello to"("world") == "Hello cglib!"
                                                                                    }
                                                                                  }
                                                                                  

                                                                                  The first test passes, the second one fails with:

                                                                                  net.sf.cglib.core.CodeGenerationException: java.lang.reflect.InvocationTargetException-->null
                                                                                  
                                                                                      at net.sf.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:345)
                                                                                      at net.sf.cglib.proxy.Enhancer.generate(Enhancer.java:492)
                                                                                      at net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:93)
                                                                                      at net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:91)
                                                                                      at net.sf.cglib.core.internal.LoadingCache$2.call(LoadingCache.java:54)
                                                                                      at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
                                                                                      at net.sf.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:61)
                                                                                      at net.sf.cglib.core.internal.LoadingCache.get(LoadingCache.java:34)
                                                                                      at net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:116)
                                                                                      at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:291)
                                                                                      at net.sf.cglib.proxy.Enhancer.createHelper(Enhancer.java:480)
                                                                                      at net.sf.cglib.proxy.Enhancer.create(Enhancer.java:305)
                                                                                      at de.scrum_master.stackoverflow.q70654015.CGLIBProxyTest.create CGLIB proxy for Groovy class with spaces in method name(CGLIBProxyTest.groovy:36)
                                                                                  Caused by: java.lang.reflect.InvocationTargetException
                                                                                      at net.sf.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:459)
                                                                                      at net.sf.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:336)
                                                                                      ... 12 more
                                                                                  Caused by: java.lang.ClassFormatError: Illegal method name "say hello to" in class de/scrum_master/stackoverflow/q70654015/SampleGroovy$$EnhancerByCGLIB$$ef703cf1
                                                                                      at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
                                                                                      ... 14 more
                                                                                  

                                                                                  This is the same error you experieced. As soon as you rename the Groovy method to something which is legal in a JVM, the test passes.

                                                                                  With regard to your claim that the behaviour is supposed to be dependent on the hardware or OS platform, I disagree. I think you probably have differences in your runtime environment. How are you building and running your project? Maven, Gradle, something else?

                                                                                  Update: I have good news for you: I had run my test on JDK 8 and 15 and cglib:cglib-nodep:3.2.6. When upgrading to CGLIB 3.3.0, the test started passing. So you might want to version-manage CGLIB in your Maven POM's section (or whatever is Gradle's equivalent) to that version. Maybe it helps. Please note that some tools might also depend on cglib:cglib, so you want to version-manage that one too. I.e., make sure that you use these versions:

                                                                                  • cglib:cglib-nodep:3.3.0
                                                                                  • cglib:cglib:3.3.0 (if it is used in your application)

                                                                                  Update 2: I am not a regular Spring user, so I forgot that Spring Core (artifact org.springframework:spring-core) includes its own CGLIB version, relocated to base package name org.springframework.cglib. Please note the package name difference from your stack trace to the original net.sf.cglib for my stand-alone example.

                                                                                  I checked for you and found out that since version 5.2.0.RELEASE, Spring Core was upgraded to CGLIB 3.3.0. So if you can use a Spring version 5.2.0 or more recent, chances are that it works for you.

                                                                                  Source https://stackoverflow.com/questions/70654015

                                                                                  QUESTION

                                                                                  Play framework in Java - errors in "hello world" example
                                                                                  Asked 2022-Jan-11 at 12:09

                                                                                  I'm trying to start working with play framework. I tried using the "hello world" example for Java, but after running the "sbt run" command I get errors. I get a lot of lines in the CMD, with the last few lines being:

                                                                                  
                                                                                  [info] p.c.s.AkkaHttpServer - Listening for HTTP on /[0:0:0:0:0:0:0:0]:9000
                                                                                  
                                                                                  (Server started, use Enter to stop and go back to the console...)
                                                                                  

                                                                                  and when I try to access http://localhost:9000/ I get a lot of new errors:

                                                                                  ←[2K
                                                                                  ←[11A[error] p.a.h.DefaultHttpErrorHandler -
                                                                                  
                                                                                  ! @7m916p156 - Internal server error, for (GET) [/] ->
                                                                                  
                                                                                  play.api.UnexpectedException: Unexpected exception[UncheckedExecutionException: java.lang.IllegalStateException: Unable to load cache item]
                                                                                          at play.core.server.DevServerStart$$anon$1.reload(DevServerStart.scala:254)
                                                                                          at play.core.server.DevServerStart$$anon$1.get(DevServerStart.scala:148)
                                                                                          at play.core.server.AkkaHttpServer.handleRequest(AkkaHttpServer.scala:302)
                                                                                          at play.core.server.AkkaHttpServer.$anonfun$createServerBinding$1(AkkaHttpServer.scala:224)
                                                                                          at akka.stream.impl.fusing.MapAsync$$anon$30.onPush(Ops.scala:1307)
                                                                                          at akka.stream.impl.fusing.GraphInterpreter.processPush(GraphInterpreter.scala:542)
                                                                                          at akka.stream.impl.fusing.GraphInterpreter.processEvent(GraphInterpreter.scala:496)
                                                                                          at akka.stream.impl.fusing.GraphInterpreter.execute(GraphInterpreter.scala:390)
                                                                                          at akka.stream.impl.fusing.GraphInterpreterShell.runBatch(ActorGraphInterpreter.scala:650)
                                                                                          at akka.stream.impl.fusing.GraphInterpreterShell$AsyncInput.execute(ActorGraphInterpreter.scala:521)
                                                                                  Caused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalStateException: Unable to load cache item
                                                                                          at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2051)
                                                                                          at com.google.common.cache.LocalCache.get(LocalCache.java:3962)
                                                                                          at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3985)
                                                                                          at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4946)
                                                                                          at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4952)
                                                                                          at com.google.inject.internal.FailableCache.get(FailableCache.java:54)
                                                                                          at com.google.inject.internal.ConstructorInjectorStore.get(ConstructorInjectorStore.java:49)
                                                                                          at com.google.inject.internal.ConstructorBindingImpl.initialize(ConstructorBindingImpl.java:155)
                                                                                          at com.google.inject.internal.InjectorImpl.initializeBinding(InjectorImpl.java:592)
                                                                                          at com.google.inject.internal.AbstractBindingProcessor$Processor.initializeBinding(AbstractBindingProcessor.java:173)
                                                                                  Caused by: java.lang.IllegalStateException: Unable to load cache item
                                                                                          at com.google.inject.internal.cglib.core.internal.$LoadingCache.createEntry(LoadingCache.java:79)
                                                                                          at com.google.inject.internal.cglib.core.internal.$LoadingCache.get(LoadingCache.java:34)
                                                                                          at com.google.inject.internal.cglib.core.$AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:119)
                                                                                          at com.google.inject.internal.cglib.core.$AbstractClassGenerator.create(AbstractClassGenerator.java:294)
                                                                                          at com.google.inject.internal.cglib.reflect.$FastClass$Generator.create(FastClass.java:65)
                                                                                          at com.google.inject.internal.BytecodeGen.newFastClassForMember(BytecodeGen.java:258)
                                                                                          at com.google.inject.internal.BytecodeGen.newFastClassForMember(BytecodeGen.java:207)
                                                                                          at com.google.inject.internal.DefaultConstructionProxyFactory.create(DefaultConstructionProxyFactory.java:49)
                                                                                          at com.google.inject.internal.ProxyFactory.create(ProxyFactory.java:156)
                                                                                          at com.google.inject.internal.ConstructorInjectorStore.createConstructor(ConstructorInjectorStore.java:94)
                                                                                  Caused by: java.lang.ExceptionInInitializerError: null
                                                                                          at com.google.inject.internal.cglib.core.$DuplicatesPredicate.evaluate(DuplicatesPredicate.java:104)
                                                                                          at com.google.inject.internal.cglib.core.$CollectionUtils.filter(CollectionUtils.java:52)
                                                                                          at com.google.inject.internal.cglib.reflect.$FastClassEmitter.(FastClassEmitter.java:69)
                                                                                          at com.google.inject.internal.cglib.reflect.$FastClass$Generator.generateClass(FastClass.java:77)
                                                                                          at com.google.inject.internal.cglib.core.$DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
                                                                                          at com.google.inject.internal.cglib.core.$AbstractClassGenerator.generate(AbstractClassGenerator.java:332)
                                                                                          at com.google.inject.internal.cglib.core.$AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:96)
                                                                                          at com.google.inject.internal.cglib.core.$AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:94)
                                                                                          at com.google.inject.internal.cglib.core.internal.$LoadingCache$2.call(LoadingCache.java:54)
                                                                                          at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
                                                                                  Caused by: com.google.inject.internal.cglib.core.$CodeGenerationException: java.lang.reflect.InaccessibleObjectException-->Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @705556e6
                                                                                          at com.google.inject.internal.cglib.core.$ReflectUtils.defineClass(ReflectUtils.java:464)
                                                                                          at com.google.inject.internal.cglib.core.$AbstractClassGenerator.generate(AbstractClassGenerator.java:339)
                                                                                          at com.google.inject.internal.cglib.core.$AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:96)
                                                                                          at com.google.inject.internal.cglib.core.$AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:94)
                                                                                          at com.google.inject.internal.cglib.core.internal.$LoadingCache$2.call(LoadingCache.java:54)
                                                                                          at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
                                                                                          at com.google.inject.internal.cglib.core.internal.$LoadingCache.createEntry(LoadingCache.java:61)
                                                                                          at com.google.inject.internal.cglib.core.internal.$LoadingCache.get(LoadingCache.java:34)
                                                                                          at com.google.inject.internal.cglib.core.$AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:119)
                                                                                          at com.google.inject.internal.cglib.core.$AbstractClassGenerator.create(AbstractClassGenerator.java:294)
                                                                                  Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @705556e6
                                                                                          at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
                                                                                          at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
                                                                                          at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
                                                                                          at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
                                                                                          at com.google.inject.internal.cglib.core.$ReflectUtils$1.run(ReflectUtils.java:61)
                                                                                          at java.base/java.security.AccessController.doPrivileged(AccessController.java:569)
                                                                                          at com.google.inject.internal.cglib.core.$ReflectUtils.(ReflectUtils.java:52)
                                                                                          at com.google.inject.internal.cglib.reflect.$FastClassEmitter.(FastClassEmitter.java:67)
                                                                                          at com.google.inject.internal.cglib.reflect.$FastClass$Generator.generateClass(FastClass.java:77)
                                                                                          at com.google.inject.internal.cglib.core.$DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
                                                                                  [error] p.a.h.DefaultHttpErrorHandler -
                                                                                  
                                                                                  ! @7m916p156 - Internal server error, for (GET) [/] ->
                                                                                  
                                                                                  play.api.UnexpectedException: Unexpected exception[UncheckedExecutionException: java.lang.IllegalStateException: Unable to load cache item]
                                                                                          at play.core.server.DevServerStart$$anon$1.reload(DevServerStart.scala:254)
                                                                                          at play.core.server.DevServerStart$$anon$1.get(DevServerStart.scala:148)
                                                                                          at play.core.server.AkkaHttpServer.handleRequest(AkkaHttpServer.scala:302)
                                                                                          at play.core.server.AkkaHttpServer.$anonfun$createServerBinding$1(AkkaHttpServer.scala:224)
                                                                                          at akka.stream.impl.fusing.MapAsync$$anon$30.onPush(Ops.scala:1307)
                                                                                          at akka.stream.impl.fusing.GraphInterpreter.processPush(GraphInterpreter.scala:542)
                                                                                          at akka.stream.impl.fusing.GraphInterpreter.processEvent(GraphInterpreter.scala:496)
                                                                                          at akka.stream.impl.fusing.GraphInterpreter.execute(GraphInterpreter.scala:390)
                                                                                          at akka.stream.impl.fusing.GraphInterpreterShell.runBatch(ActorGraphInterpreter.scala:650)
                                                                                          at akka.stream.impl.fusing.GraphInterpreterShell$AsyncInput.execute(ActorGraphInterpreter.scala:521)
                                                                                  Caused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalStateException: Unable to load cache item
                                                                                          at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2051)
                                                                                          at com.google.common.cache.LocalCache.get(LocalCache.java:3962)
                                                                                          at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3985)
                                                                                          at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4946)
                                                                                          at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4952)
                                                                                          at com.google.inject.internal.FailableCache.get(FailableCache.java:54)
                                                                                          at com.google.inject.internal.ConstructorInjectorStore.get(ConstructorInjectorStore.java:49)
                                                                                          at com.google.inject.internal.ConstructorBindingImpl.initialize(ConstructorBindingImpl.java:155)
                                                                                          at com.google.inject.internal.InjectorImpl.initializeBinding(InjectorImpl.java:592)
                                                                                          at com.google.inject.internal.AbstractBindingProcessor$Processor.initializeBinding(AbstractBindingProcessor.java:173)
                                                                                  Caused by: java.lang.IllegalStateException: Unable to load cache item
                                                                                          at com.google.inject.internal.cglib.core.internal.$LoadingCache.createEntry(LoadingCache.java:79)
                                                                                          at com.google.inject.internal.cglib.core.internal.$LoadingCache.get(LoadingCache.java:34)
                                                                                          at com.google.inject.internal.cglib.core.$AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:119)
                                                                                          at com.google.inject.internal.cglib.core.$AbstractClassGenerator.create(AbstractClassGenerator.java:294)
                                                                                          at com.google.inject.internal.cglib.reflect.$FastClass$Generator.create(FastClass.java:65)
                                                                                          at com.google.inject.internal.BytecodeGen.newFastClassForMember(BytecodeGen.java:258)
                                                                                          at com.google.inject.internal.BytecodeGen.newFastClassForMember(BytecodeGen.java:207)
                                                                                          at com.google.inject.internal.DefaultConstructionProxyFactory.create(DefaultConstructionProxyFactory.java:49)
                                                                                          at com.google.inject.internal.ProxyFactory.create(ProxyFactory.java:156)
                                                                                          at com.google.inject.internal.ConstructorInjectorStore.createConstructor(ConstructorInjectorStore.java:94)
                                                                                  Caused by: java.lang.ExceptionInInitializerError: null
                                                                                          at com.google.inject.internal.cglib.core.$DuplicatesPredicate.evaluate(DuplicatesPredicate.java:104)
                                                                                          at com.google.inject.internal.cglib.core.$CollectionUtils.filter(CollectionUtils.java:52)
                                                                                          at com.google.inject.internal.cglib.reflect.$FastClassEmitter.(FastClassEmitter.java:69)
                                                                                          at com.google.inject.internal.cglib.reflect.$FastClass$Generator.generateClass(FastClass.java:77)
                                                                                          at com.google.inject.internal.cglib.core.$DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
                                                                                          at com.google.inject.internal.cglib.core.$AbstractClassGenerator.generate(AbstractClassGenerator.java:332)
                                                                                          at com.google.inject.internal.cglib.core.$AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:96)
                                                                                          at com.google.inject.internal.cglib.core.$AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:94)
                                                                                          at com.google.inject.internal.cglib.core.internal.$LoadingCache$2.call(LoadingCache.java:54)
                                                                                          at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
                                                                                  Caused by: com.google.inject.internal.cglib.core.$CodeGenerationException: java.lang.reflect.InaccessibleObjectException-->Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @705556e6
                                                                                          at com.google.inject.internal.cglib.core.$ReflectUtils.defineClass(ReflectUtils.java:464)
                                                                                          at com.google.inject.internal.cglib.core.$AbstractClassGenerator.generate(AbstractClassGenerator.java:339)
                                                                                          at com.google.inject.internal.cglib.core.$AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:96)
                                                                                          at com.google.inject.internal.cglib.core.$AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:94)
                                                                                          at com.google.inject.internal.cglib.core.internal.$LoadingCache$2.call(LoadingCache.java:54)
                                                                                          at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
                                                                                          at com.google.inject.internal.cglib.core.internal.$LoadingCache.createEntry(LoadingCache.java:61)
                                                                                          at com.google.inject.internal.cglib.core.internal.$LoadingCache.get(LoadingCache.java:34)
                                                                                          at com.google.inject.internal.cglib.core.$AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:119)
                                                                                          at com.google.inject.internal.cglib.core.$AbstractClassGenerator.create(AbstractClassGenerator.java:294)
                                                                                  Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @705556e6
                                                                                          at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
                                                                                          at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
                                                                                          at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
                                                                                          at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
                                                                                          at com.google.inject.internal.cglib.core.$ReflectUtils$1.run(ReflectUtils.java:61)
                                                                                          at java.base/java.security.AccessController.doPrivileged(AccessController.java:569)
                                                                                          at com.google.inject.internal.cglib.core.$ReflectUtils.(ReflectUtils.java:52)
                                                                                          at com.google.inject.internal.cglib.reflect.$FastClassEmitter.(FastClassEmitter.java:67)
                                                                                          at com.google.inject.internal.cglib.reflect.$FastClass$Generator.generateClass(FastClass.java:77)
                                                                                          at com.google.inject.internal.cglib.core.$DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
                                                                                  

                                                                                  I haven't done any changes to the original hello world example, I'm using Java 17 and sbt 1.6.1.

                                                                                  Thanks in advance for any help!

                                                                                  ANSWER

                                                                                  Answered 2022-Jan-11 at 12:09

                                                                                  Play 2.8 supports Java 8-11, I set my environmental variable "JAVA_HOME" to the Java 8 JDK and the command sbt run worked.

                                                                                  Source https://stackoverflow.com/questions/70575966

                                                                                  QUESTION

                                                                                  nested exception is org.hibernate.exception.SQLGrammarException:could not execute query] with root cause java.sql.SQLException: Column 'id' not found
                                                                                  Asked 2021-Dec-26 at 12:54

                                                                                  I'm doing a house rental application with Spring, React and MySQL. I have a class which is like a transaction. What I'm trying to do is to get all entries for the class sweetholiday_user_house, but I only want the fields start_rent_date and end_rent_date. The table is called sweet_holiday_user_house. For that I have created a SQL query in my repository:

                                                                                  package ch.ak.sweetholiday.sweetholidaybe.repository;
                                                                                  
                                                                                  import ch.ak.sweetholiday.sweetholidaybe.model.SweetholidayUserHouse;
                                                                                  import org.springframework.data.jpa.repository.JpaRepository;
                                                                                  import org.springframework.data.jpa.repository.Query;
                                                                                  import org.springframework.stereotype.Repository;
                                                                                  
                                                                                  import java.util.List;
                                                                                  
                                                                                  @Repository
                                                                                  public interface SweetholidayUserHouseRepository extends JpaRepository {
                                                                                      @Query(value = "SELECT sweetholiday_user_house.start_rent_date, sweetholiday_user_house.end_rent_date FROM sweetholiday_user_house", nativeQuery = true)
                                                                                      List findAllReserved();
                                                                                  }
                                                                                  

                                                                                  As soon as the method "findAllReserved" gets called, I get the following error message:

                                                                                  TransactionSafe called.
                                                                                  2021-12-25 21:44:28.711  WARN 57746 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 0, SQLState: S0022
                                                                                  2021-12-25 21:44:28.711 ERROR 57746 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper   : Column 'id' not found.
                                                                                  2021-12-25 21:44:28.760 ERROR 57746 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; SQL [SELECT sweetholiday_user_house.start_rent_date, sweetholiday_user_house.end_rent_date FROM sweetholiday_user_house]; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query] with root cause
                                                                                  
                                                                                  java.sql.SQLException: Column 'id' not found.
                                                                                  

                                                                                  I tried it with the JPQL query, but it still doesn't work. I'm writing because I couldn't find a solution for it anywhere. I also don't want to use @JSONIgnore because I need the id and the foreign ids like house_id for another API call. I'm doing this because I don't want to send all information to everyone. Because when I send the foreign ids like user_id, everyone will have access to every user data.

                                                                                  The class in phpmyadmin

                                                                                  The class in my Spring application:

                                                                                  package ch.ak.sweetholiday.sweetholidaybe.model;
                                                                                  
                                                                                  import javax.persistence.*;
                                                                                  import java.time.LocalDateTime;
                                                                                  
                                                                                  @Entity
                                                                                  @Table(name = "sweetholiday_user_house")
                                                                                  public class SweetholidayUserHouse {
                                                                                  
                                                                                      @Id
                                                                                      @GeneratedValue(strategy = GenerationType.IDENTITY)
                                                                                      private Long id;
                                                                                  
                                                                                      @ManyToOne
                                                                                      @JoinColumn(name = "sweetholiday_user_id", referencedColumnName = "id")
                                                                                      private SweetholidayUser sweetholidayUser;
                                                                                  
                                                                                      @ManyToOne
                                                                                      @JoinColumn(name = "house_id", referencedColumnName = "id")
                                                                                      private House house;
                                                                                  
                                                                                      @Column(name = "transaction_date")
                                                                                      private LocalDateTime transaction_date;
                                                                                  
                                                                                      @Column(name = "start_rent_date")
                                                                                      private LocalDateTime start_rent_date;
                                                                                  
                                                                                      @Column(name = "end_rent_date")
                                                                                      private LocalDateTime end_rent_date;
                                                                                  
                                                                                      @Column(name = "options")
                                                                                      private String options;
                                                                                  
                                                                                      @Column(name = "payment")
                                                                                      private String payment;
                                                                                  
                                                                                      public Long getId() {
                                                                                          return id;
                                                                                      }
                                                                                  
                                                                                      public void setId(Long id) {
                                                                                          this.id = id;
                                                                                      }
                                                                                  
                                                                                      public SweetholidayUser getSweetholidayUser() {
                                                                                          return sweetholidayUser;
                                                                                      }
                                                                                  
                                                                                      public void setSweetholidayUser(SweetholidayUser sweetholidayUser) {
                                                                                          this.sweetholidayUser = sweetholidayUser;
                                                                                      }
                                                                                  
                                                                                      public House getHouse() {
                                                                                          return house;
                                                                                      }
                                                                                  
                                                                                      public void setHouse(House house) {
                                                                                          this.house = house;
                                                                                      }
                                                                                  
                                                                                      public LocalDateTime getTransaction_date() {
                                                                                          return transaction_date;
                                                                                      }
                                                                                  
                                                                                      public void setTransaction_date(LocalDateTime transaction_date) {
                                                                                          this.transaction_date = transaction_date;
                                                                                      }
                                                                                  
                                                                                      public LocalDateTime getStart_rent_date() {
                                                                                          return start_rent_date;
                                                                                      }
                                                                                  
                                                                                      public void setStart_rent_date(LocalDateTime start_rent_date) {
                                                                                          this.start_rent_date = start_rent_date;
                                                                                      }
                                                                                  
                                                                                      public LocalDateTime getEnd_rent_date() {
                                                                                          return end_rent_date;
                                                                                      }
                                                                                  
                                                                                      public void setEnd_rent_date(LocalDateTime end_rent_date) {
                                                                                          this.end_rent_date = end_rent_date;
                                                                                      }
                                                                                  
                                                                                      public String getOptions() {
                                                                                          return options;
                                                                                      }
                                                                                  
                                                                                      public void setOptions(String options) {
                                                                                          this.options = options;
                                                                                      }
                                                                                  
                                                                                      public String getPayment() {
                                                                                          return payment;
                                                                                      }
                                                                                  
                                                                                      public void setPayment(String payment) {
                                                                                          this.payment = payment;
                                                                                      }
                                                                                  }
                                                                                  

                                                                                  The method gets called like that:

                                                                                  @Override
                                                                                  public List findAllTransactionsSafe() {
                                                                                      return sweetholidayUserHouseRepository.findAllReserved();
                                                                                  }
                                                                                  

                                                                                  Here is the full error message if you need it:

                                                                                  TransactionSafe called.
                                                                                  2021-12-25 21:44:28.711  WARN 57746 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 0, SQLState: S0022
                                                                                  2021-12-25 21:44:28.711 ERROR 57746 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper   : Column 'id' not found.
                                                                                  2021-12-25 21:44:28.760 ERROR 57746 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; SQL [SELECT sweetholiday_user_house.start_rent_date, sweetholiday_user_house.end_rent_date FROM sweetholiday_user_house]; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query] with root cause
                                                                                  
                                                                                  java.sql.SQLException: Column 'id' not found.
                                                                                      at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[mysql-connector-java-8.0.27.jar:8.0.27]
                                                                                      at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[mysql-connector-java-8.0.27.jar:8.0.27]
                                                                                      at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89) ~[mysql-connector-java-8.0.27.jar:8.0.27]
                                                                                      at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63) ~[mysql-connector-java-8.0.27.jar:8.0.27]
                                                                                      at com.mysql.cj.jdbc.result.ResultSetImpl.findColumn(ResultSetImpl.java:581) ~[mysql-connector-java-8.0.27.jar:8.0.27]
                                                                                      at com.mysql.cj.jdbc.result.ResultSetImpl.getLong(ResultSetImpl.java:854) ~[mysql-connector-java-8.0.27.jar:8.0.27]
                                                                                      at com.zaxxer.hikari.pool.HikariProxyResultSet.getLong(HikariProxyResultSet.java) ~[HikariCP-4.0.3.jar:na]
                                                                                      at org.hibernate.type.descriptor.sql.BigIntTypeDescriptor$2.doExtract(BigIntTypeDescriptor.java:63) ~[hibernate-core-5.6.1.Final.jar:5.6.1.Final]
                                                                                      at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:47) ~[hibernate-core-5.6.1.Final.jar:5.6.1.Final]
                                                                                      at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:257) ~[hibernate-core-5.6.1.Final.jar:5.6.1.Final]
                                                                                      at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:253) ~[hibernate-core-5.6.1.Final.jar:5.6.1.Final]
                                                                                      at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:243) ~[hibernate-core-5.6.1.Final.jar:5.6.1.Final]
                                                                                      at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:329) ~[hibernate-core-5.6.1.Final.jar:5.6.1.Final]
                                                                                      at org.hibernate.loader.Loader.extractKeysFromResultSet(Loader.java:811) ~[hibernate-core-5.6.1.Final.jar:5.6.1.Final]
                                                                                      at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:735) ~[hibernate-core-5.6.1.Final.jar:5.6.1.Final]
                                                                                      at org.hibernate.loader.Loader.getRowsFromResultSet(Loader.java:1047) ~[hibernate-core-5.6.1.Final.jar:5.6.1.Final]
                                                                                      at org.hibernate.loader.Loader.processResultSet(Loader.java:998) ~[hibernate-core-5.6.1.Final.jar:5.6.1.Final]
                                                                                      at org.hibernate.loader.Loader.doQuery(Loader.java:967) ~[hibernate-core-5.6.1.Final.jar:5.6.1.Final]
                                                                                      at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:357) ~[hibernate-core-5.6.1.Final.jar:5.6.1.Final]
                                                                                      at org.hibernate.loader.Loader.doList(Loader.java:2868) ~[hibernate-core-5.6.1.Final.jar:5.6.1.Final]
                                                                                      at org.hibernate.loader.Loader.doList(Loader.java:2850) ~[hibernate-core-5.6.1.Final.jar:5.6.1.Final]
                                                                                      at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2682) ~[hibernate-core-5.6.1.Final.jar:5.6.1.Final]
                                                                                      at org.hibernate.loader.Loader.list(Loader.java:2677) ~[hibernate-core-5.6.1.Final.jar:5.6.1.Final]
                                                                                      at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:338) ~[hibernate-core-5.6.1.Final.jar:5.6.1.Final]
                                                                                      at org.hibernate.internal.SessionImpl.listCustomQuery(SessionImpl.java:2195) ~[hibernate-core-5.6.1.Final.jar:5.6.1.Final]
                                                                                      at org.hibernate.internal.AbstractSharedSessionContract.list(AbstractSharedSessionContract.java:1190) ~[hibernate-core-5.6.1.Final.jar:5.6.1.Final]
                                                                                      at org.hibernate.query.internal.NativeQueryImpl.doList(NativeQueryImpl.java:177) ~[hibernate-core-5.6.1.Final.jar:5.6.1.Final]
                                                                                      at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1617) ~[hibernate-core-5.6.1.Final.jar:5.6.1.Final]
                                                                                      at org.hibernate.query.Query.getResultList(Query.java:165) ~[hibernate-core-5.6.1.Final.jar:5.6.1.Final]
                                                                                      at org.springframework.data.jpa.repository.query.JpaQueryExecution$CollectionExecution.doExecute(JpaQueryExecution.java:128) ~[spring-data-jpa-2.6.0.jar:2.6.0]
                                                                                      at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:90) ~[spring-data-jpa-2.6.0.jar:2.6.0]
                                                                                      at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:155) ~[spring-data-jpa-2.6.0.jar:2.6.0]
                                                                                      at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:143) ~[spring-data-jpa-2.6.0.jar:2.6.0]
                                                                                      at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137) ~[spring-data-commons-2.6.0.jar:2.6.0]
                                                                                      at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121) ~[spring-data-commons-2.6.0.jar:2.6.0]
                                                                                      at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:159) ~[spring-data-commons-2.6.0.jar:2.6.0]
                                                                                      at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:138) ~[spring-data-commons-2.6.0.jar:2.6.0]
                                                                                      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:80) ~[spring-data-commons-2.6.0.jar:2.6.0]
                                                                                      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:145) ~[spring-data-jpa-2.6.0.jar:2.6.0]
                                                                                      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.13.jar:5.3.13]
                                                                                      at jdk.proxy4/jdk.proxy4.$Proxy116.findAllReserved(Unknown Source) ~[na:na]
                                                                                      at ch.ak.sweetholiday.sweetholidaybe.service.SweetholidayUserHouseServiceImpl.findAllTransactionsSafe(SweetholidayUserHouseServiceImpl.java:48) ~[classes/:na]
                                                                                      at ch.ak.sweetholiday.sweetholidaybe.service.SweetholidayUserHouseServiceImpl$$FastClassBySpringCGLIB$$376f23f9.invoke() ~[classes/:na]
                                                                                      at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:783) ~[spring-aop-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) ~[spring-aop-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) ~[spring-aop-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:698) ~[spring-aop-5.3.13.jar:5.3.13]
                                                                                      at ch.ak.sweetholiday.sweetholidaybe.service.SweetholidayUserHouseServiceImpl$$EnhancerBySpringCGLIB$$a6cbff5.findAllTransactionsSafe() ~[classes/:na]
                                                                                      at ch.ak.sweetholiday.sweetholidaybe.controller.UserController.getSafeTransaction(UserController.java:104) ~[classes/:na]
                                                                                      at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
                                                                                      at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
                                                                                      at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
                                                                                      at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
                                                                                      at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067) ~[spring-webmvc-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) ~[spring-webmvc-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.13.jar:5.3.13]
                                                                                      at javax.servlet.http.HttpServlet.service(HttpServlet.java:655) ~[tomcat-embed-core-9.0.55.jar:4.0.FR]
                                                                                      at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.13.jar:5.3.13]
                                                                                      at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[tomcat-embed-core-9.0.55.jar:4.0.FR]
                                                                                      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.55.jar:9.0.55]
                                                                                      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.55.jar:9.0.55]
                                                                                      at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.55.jar:9.0.55]
                                                                                      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.55.jar:9.0.55]
                                                                                      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.55.jar:9.0.55]
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:150) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at ch.ak.sweetholiday.sweetholidaybe.jwt.JWTAuthorizationFilter.doFilterInternal(JWTAuthorizationFilter.java:40) ~[classes/:na]
                                                                                      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:219) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:213) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) ~[spring-web-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183) ~[spring-security-web-5.6.0.jar:5.6.0]
                                                                                      at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358) ~[spring-web-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271) ~[spring-web-5.3.13.jar:5.3.13]
                                                                                      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.55.jar:9.0.55]
                                                                                      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.55.jar:9.0.55]
                                                                                      at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.13.jar:5.3.13]
                                                                                      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.55.jar:9.0.55]
                                                                                      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.55.jar:9.0.55]
                                                                                      at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.13.jar:5.3.13]
                                                                                      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.55.jar:9.0.55]
                                                                                      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.55.jar:9.0.55]
                                                                                      at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.13.jar:5.3.13]
                                                                                      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.13.jar:5.3.13]
                                                                                      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.55.jar:9.0.55]
                                                                                      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.55.jar:9.0.55]
                                                                                      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-9.0.55.jar:9.0.55]
                                                                                      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.55.jar:9.0.55]
                                                                                      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540) ~[tomcat-embed-core-9.0.55.jar:9.0.55]
                                                                                      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.55.jar:9.0.55]
                                                                                      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.55.jar:9.0.55]
                                                                                      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.55.jar:9.0.55]
                                                                                      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) ~[tomcat-embed-core-9.0.55.jar:9.0.55]
                                                                                      at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382) ~[tomcat-embed-core-9.0.55.jar:9.0.55]
                                                                                      at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.55.jar:9.0.55]
                                                                                      at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:895) ~[tomcat-embed-core-9.0.55.jar:9.0.55]
                                                                                      at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1722) ~[tomcat-embed-core-9.0.55.jar:9.0.55]
                                                                                      at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.55.jar:9.0.55]
                                                                                      at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.55.jar:9.0.55]
                                                                                      at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.55.jar:9.0.55]
                                                                                      at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.55.jar:9.0.55]
                                                                                      at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]
                                                                                  

                                                                                  ANSWER

                                                                                  Answered 2021-Dec-25 at 22:09

                                                                                  You are selecting a subset (start_rent_date and end_rent_date) of the columns of the table sweetholiday_user_house. However the results are being mapped to the managed entity SweetholidayUserHouse. So the mapping fails when it looks for the id column in the resultset, which is missing.

                                                                                  You can avoid this exception by either of these two approaches. There are several more. Here is a good discussion of this - Spring JPA selecting specific columns

                                                                                  Option 1: Keep the existing query and change the return type of the findAllReserved() method to Object[]. Here for each Object[], Object[0] is start_rent_date and Object[1] is end_rent_date.

                                                                                  @Query(value = "SELECT sweetholiday_user_house.start_rent_date, sweetholiday_user_house.end_rent_date FROM sweetholiday_user_house", nativeQuery = true)
                                                                                  
                                                                                  List findAllReserved();
                                                                                  

                                                                                  Option 2: Keep the return type and change the query to JPA query (non-native) to return all the columns. This will map all the columns to the Hibernate Object.

                                                                                  @Query(value = "SELECT user FROM sweetholiday_user_house user")
                                                                                  List findAllReserved();
                                                                                  

                                                                                  Source https://stackoverflow.com/questions/70482779

                                                                                  Community Discussions, Code Snippets contain sources that include Stack Exchange Network

                                                                                  Vulnerabilities

                                                                                  No vulnerabilities reported

                                                                                  Install cglib

                                                                                  You can download it from GitHub, Maven.
                                                                                  You can use cglib like any standard Java library. Please include the the jar files in your classpath. You can also use any IDE and you can run and debug the cglib component as you would do with any other Java program. Best practice is to use a build tool that supports dependency management such as Maven or Gradle. For Maven installation, please refer maven.apache.org. For Gradle installation, please refer gradle.org .

                                                                                  Support

                                                                                  For any new features, suggestions and bugs create an issue on GitHub. If you have any questions check and ask questions on community page Stack Overflow .
                                                                                  Find more information at:
                                                                                  Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
                                                                                  Find more libraries
                                                                                  Explore Kits - Develop, implement, customize Projects, Custom Functions and Applications with kandi kits​
                                                                                  Save this library and start creating your kit
                                                                                  Install
                                                                                  Maven
                                                                                  Gradle
                                                                                  CLONE
                                                                                • HTTPS

                                                                                  https://github.com/cglib/cglib.git

                                                                                • CLI

                                                                                  gh repo clone cglib/cglib

                                                                                • sshUrl

                                                                                  git@github.com:cglib/cglib.git

                                                                                • Share this Page

                                                                                  share link

                                                                                  Explore Related Topics

                                                                                  Consider Popular Reflection Libraries

                                                                                  object-reflector

                                                                                  by sebastianbergmann

                                                                                  cglib

                                                                                  by cglib

                                                                                  reflection

                                                                                  by doctrine

                                                                                  avo

                                                                                  by mmcloughlin

                                                                                  rttr

                                                                                  by rttrorg

                                                                                  Compare Reflection Libraries with Highest Support

                                                                                  Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
                                                                                  Find more libraries
                                                                                  Explore Kits - Develop, implement, customize Projects, Custom Functions and Applications with kandi kits​
                                                                                  Save this library and start creating your kit