spring-projects / spring-boot

Spring Boot
https://spring.io/projects/spring-boot
Apache License 2.0
74.91k stars 40.62k forks source link

Error "Name for argument of type [java.util.UUID] not specified, and parameter name information not found in class file either"with spring-boot 3.2.0 upgrade #38723

Closed ghevge closed 10 months ago

ghevge commented 10 months ago

After upgrading my code from Java 17 and Spring-boot 3.1.3 to Java 21 and String-boot 3.2.0, I've started to see errors like the ones below, when calling the REST APIs:

After running some more tests, using different spring-boot versions with Java 21, I can tell that the problem is only visible with spring-boot 3.2.0. The system works fine if I use spring-boot 3.1.6 with Java 21.

Name for argument of type [java.util.UUID] not specified, and parameter name information not found in class file either.

Name for argument of type [java.lang.String] not specified, and parameter name information not found in class file either.

Name for argument of type [java.lang.Integer] not specified, and parameter name information not found in class file either.

Any idea what is going on? Is there a new spring-boot glitch as it seem to have had occurred in the past? https://github.com/spring-projects/spring-loaded/issues/68

Thanks


are_1         | 2023-12-10T18:04:38.962Z <> {thread=http-nio-8080-exec-7} {traceId=7d292d7bef196d7b46db97bff2e7ca0c} {spanId=bba4492c71a85d94} DEBUG: [org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver] org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolverrlf(Using @ExceptionHandler com.kp.mw.exceptions.RestExceptionHandler#handleCustomException(Exception)) 
middleware_1         | 2023-12-10T18:04:38.966Z <> {thread=http-nio-8080-exec-7} {traceId=7d292d7bef196d7b46db97bff2e7ca0c} {spanId=bba4492c71a85d94} ERROR: [com.kp.mw.exceptions.RestExceptionHandler] com.kp.mw.exceptions.RestExceptionHandlerrlf(Exception occurred:java.lang.IllegalArgumentException: Name for argument of type [java.util.UUID] not specified, and parameter name information not found in class file either.
middleware_1         |  at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.updateNamedValueInfo(AbstractNamedValueMethodArgumentResolver.java:183)
middleware_1         |  at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.getNamedValueInfo(AbstractNamedValueMethodArgumentResolver.java:160)
middleware_1         |  at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:106)
middleware_1         |  at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)
middleware_1         |  at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:218)
middleware_1         |  at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:171)
middleware_1         |  at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)
middleware_1         |  at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:917)
middleware_1         |  at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:829)
middleware_1         |  at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
middleware_1         |  at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)
middleware_1         |  at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)
middleware_1         |  at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
middleware_1         |  at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903)
middleware_1         |  at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564)
middleware_1         |  at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
middleware_1         |  at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
middleware_1         |  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205)
middleware_1         |  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
middleware_1         |  at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
middleware_1         |  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
middleware_1         |  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
middleware_1         |  at com.kp.mw.filters.AuthorizationFilter.doFilter(AuthorizationFilter.java:36)
middleware_1         |  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
middleware_1         |  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
middleware_1         |  at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
middleware_1         |  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
middleware_1         |  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
middleware_1         |  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
middleware_1         |  at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
middleware_1         |  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
middleware_1         |  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
middleware_1         |  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
middleware_1         |  at org.springframework.web.filter.ServerHttpObservationFilter.doFilterInternal(ServerHttpObservationFilter.java:109)
middleware_1         |  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
middleware_1         |  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
middleware_1         |  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
middleware_1         |  at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
middleware_1         |  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
middleware_1         |  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
middleware_1         |  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
middleware_1         |  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
middleware_1         |  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
middleware_1         |  at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
middleware_1         |  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
middleware_1         |  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
middleware_1         |  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
middleware_1         |  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:340)
middleware_1         |  at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391)
middleware_1         |  at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
middleware_1         |  at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896)
middleware_1         |  at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1744)
middleware_1         |  at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
middleware_1         |  at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
middleware_1         |  at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
middleware_1         |  at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
middleware_1         |  at java.base/java.lang.Thread.run(Thread.java:1583)
middleware_1         | ) 
middleware_1         | 2023-12-10T18:04:38.976Z <> {thread=http-nio-8080-exec-7} {traceId=7d292d7bef196d7b46db97bff2e7ca0c} {spanId=bba4492c71a85d94} DEBUG: [org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor] org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessorrlf(Using 'text/plain', given [*/*] and supported [text/plain, */*, application/json, application/*+json]) 
middleware_1         | 2023-12-10T18:04:38.976Z <> {thread=http-nio-8080-exec-7} {traceId=7d292d7bef196d7b46db97bff2e7ca0c} {spanId=bba4492c71a85d94} DEBUG: [org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor] org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessorrlf(Writing ["{"message":"An unexpected error has occurred"}"]) 
lb_1                 | 172.18.0.1 - - [10/Dec/2023:18:04:38 +0000] "GET /product/d9ede6d3-c262-4fc6-b764-cdd4e229f841?ignoreView=true&web HTTP/1.1" 500 46 "http://localhost/?editProductId=d9ede6d3-c262-4fc6-b764-cdd4e229f841&locale=en" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
middleware_1         | 2023-12-10T18:04:38.981Z <> {thread=http-nio-8080-exec-7} {traceId=7d292d7bef196d7b46db97bff2e7ca0c} {spanId=bba4492c71a85d94} DEBUG: [org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver] org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolverrlf(Resolved [java.lang.IllegalArgumentException: Name for argument of type [java.util.UUID] not specified, and parameter name information not found in class file either.]) 
middleware_1         | 2023-12-10T18:04:38.982Z <> {thread=http-nio-8080-exec-7} {traceId=7d292d7bef196d7b46db97bff2e7ca0c} {spanId=bba4492c71a85d94} DEBUG: [org.springframework.web.servlet.DispatcherServlet] org.springframework.web.servlet.DispatcherServletrlf(Completed 500 INTERNAL_SERVER_ERROR) 
middleware_1         | 2023-12-10T18:04:38.984Z <> {thread=persist-error-thread} {traceId=} {spanId=} DEBUG: [org.mybatis.spring.SqlSessionUtils] org.mybatis.spring.SqlSessionUtilsrlf(Creating a new SqlSession) 
middleware_1         | 2023-12-10T18:04:38.984Z <> {thread=persist-error-thread} {traceId=} {spanId=} DEBUG: [org.mybatis.spring.SqlSessionUtils] org.mybatis.spring.SqlSessionUtilsrlf(SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3b6970da] was not registered for synchronization because synchronization is not active) 
middleware_1         | 2023-12-10T18:04:38.984Z <> {thread=persist-error-thread} {traceId=} {spanId=} DEBUG: [org.springframework.jdbc.datasource.DataSourceUtils] org.springframework.jdbc.datasource.DataSourceUtilsrlf(Fetching JDBC Connection from DataSource) 
middleware_1         | 2023-12-10T18:04:38.985Z <> {thread=persist-error-thread} {traceId=} {spanId=} DEBUG: [org.mybatis.spring.transaction.SpringManagedTransaction] org.mybatis.spring.transaction.SpringManagedTransactionrlf(JDBC Connection [io.opentelemetry.instrumentation.jdbc.internal.OpenTelemetryConnection@5342b636] will not be managed by Spring) 
middleware_1         | 2023-12-10T18:04:38.985Z <> {thread=persist-error-thread} {traceId=} {spanId=} DEBUG: [com.kp.mw.db.mappers.ErrorsMapper.getIgnoreErrors] com.kp.mw.db.mappers.ErrorsMapper.getIgnoreErrorsrlf(==>  Preparing: SELECT ir.* FROM errors.ignorable_errors ir) 
middleware_1         | 2023-12-10T18:04:38.985Z <> {thread=persist-error-thread} {traceId=} {spanId=} DEBUG: [com.kp.mw.db.mappers.ErrorsMapper.getIgnoreErrors] com.kp.mw.db.mappers.ErrorsMapper.getIgnoreErrorsrlf(==> Parameters: ) 
middleware_1         | 2023-12-10T18:04:38.989Z <> {thread=persist-error-thread} {traceId=} {spanId=} DEBUG: [com.kp.mw.db.mappers.ErrorsMapper.getIgnoreErrors] com.kp.mw.db.mappers.ErrorsMapper.getIgnoreErrorsrlf(<==      Total: 0) 
middleware_1         | 2023-12-10T18:04:38.990Z <> {thread=persist-error-thread} {traceId=} {spanId=} DEBUG: [org.mybatis.spring.SqlSessionUtils] org.mybatis.spring.SqlSessionUtilsrlf(Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3b6970da]) 
middleware_1         | 2023-12-10T18:04:38.992Z <> {thread=persist-error-thread} {traceId=} {spanId=} DEBUG: [org.mybatis.spring.SqlSessionUtils] org.mybatis.spring.SqlSessionUtilsrlf(Creating a new SqlSession) 
middleware_1         | 2023-12-10T18:04:38.992Z <> {thread=persist-error-thread} {traceId=} {spanId=} DEBUG: [org.mybatis.spring.SqlSessionUtils] org.mybatis.spring.SqlSessionUtilsrlf(SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2bd9d594] was not registered for synchronization because synchronization is not active) 
middleware_1         | 2023-12-10T18:04:38.992Z <> {thread=persist-error-thread} {traceId=} {spanId=} DEBUG: [org.springframework.jdbc.datasource.DataSourceUtils] org.springframework.jdbc.datasource.DataSourceUtilsrlf(Fetching JDBC Connection from DataSource) 
middleware_1         | 2023-12-10T18:04:38.993Z <> {thread=persist-error-thread} {traceId=} {spanId=} DEBUG: [org.mybatis.spring.transaction.SpringManagedTransaction] org.mybatis.spring.transaction.SpringManagedTransactionrlf(JDBC Connection [io.opentelemetry.instrumentation.jdbc.internal.OpenTelemetryConnection@5b468f95] will not be managed by Spring) 
middleware_1         | 2023-12-10T18:04:38.993Z <> {thread=persist-error-thread} {traceId=} {spanId=} DEBUG: [com.kp.mw.db.mappers.ErrorsMapper.createError] com.kp.mw.db.mappers.ErrorsMapper.createErrorrlf(==>  Preparing: INSERT INTO errors.errors (id, username, method, url, urlRegex, body, signature, error_stack, error_message, ip, creation_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP)) 
middleware_1         | 2023-12-10T18:04:38.994Z <> {thread=persist-error-thread} {traceId=} {spanId=} DEBUG: [com.kp.mw.db.mappers.ErrorsMapper.createError] com.kp.mw.db.mappers.ErrorsMapper.createErrorrlf(==> Parameters: 8e69ba03-6cd9-430e-b30a-db5cca540298(UUID), null, getProduct(String), http://localhost/product/d9ede6d3-c262-4fc6-b764-cdd4e229f841?ignoreView=true&web(String), /product/[0-9a-zA-Z-]{1,}(String), null, 108b9713a0c70e4d7add7ec76789995be8c5689790dd99f1a6eee2ef3b4017be(String), java.lang.IllegalArgumentException: Name for argument of type [java.util.UUID] not specified, and parameter name information not found in class file either.
middleware_1         |  at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.updateNamedValueInfo(AbstractNamedValueMethodArgumentResolver.java:183)
middleware_1         |  at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.getNamedValueInfo(AbstractNamedValueMethodArgumentResolver.java:160)
middleware_1         |  at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:106)
middleware_1         |  at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)
middleware_1         |  at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:218)
middleware_1         |  at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:171)
middleware_1         |  at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)
middleware_1         |  at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:917)
middleware_1         |  at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:829)
middleware_1         |  at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
middleware_1         |  at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)
middleware_1         |  at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)
middleware_1         |  at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
middleware_1         |  at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903)
middleware_1         |  at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564)
middleware_1         |  at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
middleware_1         |  at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
middleware_1         |  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205)
middleware_1         |  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
middleware_1         |  at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
middleware_1         |  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
middleware_1         |  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
middleware_1         |  at com.kp.mw.filters.AuthorizationFilter.doFilter(AuthorizationFilter.java:36)
middleware_1         |  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
middleware_1         |  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
middleware_1         |  at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
middleware_1         |  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
middleware_1         |  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
middleware_1         |  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
middleware_1         |  at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
middleware_1         |  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
middleware_1         |  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
middleware_1         |  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
middleware_1         |  at org.springframework.web.filter.ServerHttpObservationFilter.doFilterInternal(ServerHttpObservationFilter.java:109)
middleware_1         |  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
middleware_1         |  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
middleware_1         |  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
middleware_1         |  at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
middleware_1         |  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
middleware_1         |  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
middleware_1         |  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
middleware_1         |  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
middleware_1         |  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
middleware_1         |  at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
middleware_1         |  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
middleware_1         |  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
middleware_1         |  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
middleware_1         |  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:340)
middleware_1         |  at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391)
middleware_1         |  at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
middleware_1         |  at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896)
middleware_1         |  at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1744)
middleware_1         |  at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
middleware_1         |  at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
middleware_1         |  at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
middleware_1         |  at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
middleware_1         |  at java.base/java.lang.Thread.run(Thread.java:1583)
middleware_1         | (String), Name for argument of type [java.util.UUID] not specified, and parameter name information not found in class file either.(String), 172.18.0.1(String)) 
middleware_1         | 2023-12-10T18:04:39.009Z <> {thread=http-nio-8080-exec-8} {traceId=} {spanId=} DEBUG: [io.micrometer.tracing.otel.propagation.BaggageTextMapPropagator] io.micrometer.tracing.otel.propagation.BaggageTextMapPropagatorrlf(Will propagate new baggage context for entries {}) 
middleware_1         | 2023-12-10T18:04:39.010Z <> {thread=http-nio-8080-exec-8} {traceId=bbf381b8fdee086f923ab2cec5764629} {spanId=cff2129fcd91a697} DEBUG: [org.springframework.web.servlet.DispatcherServlet] org.springframework.web.servlet.DispatcherServletrlf(GET "/system/alerts/active?web", paramet

My maven compile plugin configuration:


......
 <properties>
    <maven.compiler.source>21</maven.compiler.source>
    <maven.compiler.target>21</maven.compiler.target>
    <java.version>21</java.version>
    <springboot.version>3.2.0</springboot.version>
......
 <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${springboot.version}</version>
            <executions>
              <execution>
                <configuration>
                  <classifier>exec</classifier>
                  <finalName>${project.artifactId}</finalName>
                </configuration>
                <goals>
                  <goal>repackage</goal>
                </goals>
              </execution>
              <execution>
                <id>build-info</id>
                <goals>
                    <goal>build-info</goal>
                </goals>
            </execution>
            </executions>
          </plugin>
......
knoobie commented 10 months ago

Did you read the very first paragraph of the upgrade guide? https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.2-Release-Notes

ghevge commented 10 months ago

@knoobie thanks for pointing me to that doc! I am using spring-boot-maven-plugin not maven-compiler-plugin. Do you know how can I set the "parameters" configuration on spring-boot-maven-plugin ?

ghevge commented 10 months ago

I've already tried to add the spring-boot-starter-parent as described here but that causes a java.lang.StackOverflowError error during startup:

Caused by: java.lang.reflect.InvocationTargetException
middleware_1         |  ... 1024 more
middleware_1         | Caused by: java.lang.reflect.InvocationTargetException
middleware_1         |  ... 1024 more
middleware_1         | Caused by: java.lang.StackOverflowError
middleware_1         |  at java.base/sun.nio.fs.UnixPath.<init>(UnixPath.java:76)
middleware_1         |  at java.base/sun.nio.fs.UnixFileSystem.getPath(UnixFileSystem.java:312)
middleware_1         |  at java.base/java.util.zip.ZipFile$Source.get(ZipFile.java:1445)
middleware_1         |  at java.base/java.util.zip.ZipFile$CleanableResource.<init>(ZipFile.java:724)
middleware_1         |  at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:251)
middleware_1         |  at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:180)
middleware_1         |  at java.base/java.util.jar.JarFile.<init>(JarFile.java:345)
middleware_1         |  at java.base/java.util.jar.JarFile.<init>(JarFile.java:316)
middleware_1         |  at java.base/java.util.jar.JarFile.<init>(JarFile.java:282)
middleware_1         |  at org.springframework.boot.loader.jar.NestedJarFile.<init>(NestedJarFile.java:135)
middleware_1         |  at org.springframework.boot.loader.jar.NestedJarFile.<init>(NestedJarFile.java:120)
middleware_1         |  at org.springframework.boot.loader.net.protocol.jar.UrlNestedJarFile.<init>(UrlNestedJarFile.java:42)
middleware_1         |  at org.springframework.boot.loader.net.protocol.jar.UrlJarFileFactory.createJarFileForNested(UrlJarFileFactory.java:86)
middleware_1         |  at org.springframework.boot.loader.net.protocol.jar.UrlJarFileFactory.createJarFile(UrlJarFileFactory.java:55)
middleware_1         |  at org.springframework.boot.loader.net.protocol.jar.UrlJarFiles.getOrCreate(UrlJarFiles.java:72)
middleware_1         |  at org.springframework.boot.loader.net.protocol.jar.JarUrlConnection.connect(JarUrlConnection.java:289)
middleware_1         |  at org.springframework.boot.loader.net.protocol.jar.JarUrlConnection.getJarFile(JarUrlConnection.java:99)
middleware_1         |  at org.springframework.boot.loader.net.protocol.jar.JarUrlClassLoader.getJarFile(JarUrlClassLoader.java:185)
middleware_1         |  at org.springframework.boot.loader.net.protocol.jar.JarUrlClassLoader.definePackage(JarUrlClassLoader.java:143)
middleware_1         |  at org.springframework.boot.loader.net.protocol.jar.JarUrlClassLoader.definePackageIfNecessary(JarUrlClassLoader.java:126)
middleware_1         |  at org.springframework.boot.loader.net.protocol.jar.JarUrlClassLoader.loadClass(JarUrlClassLoader.java:99)
middleware_1         |  at org.springframework.boot.loader.launch.LaunchedClassLoader.loadClass(LaunchedClassLoader.java:91)
middleware_1         |  at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
middleware_1         |  at java.base/java.lang.Class.forName0(Native Method)
middleware_1         |  at java.base/java.lang.Class.forName(Class.java:534)
middleware_1         |  at java.base/java.lang.Class.forName(Class.java:513)
middleware_1         |  at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:88)
middleware_1         |  at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:53)
middleware_1         |  at org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:58)
middleware_1         |  at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
middleware_1         |  at java.base/java.lang.reflect.Method.invoke(Method.java:580)
middleware_1         |  at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:91)
middleware_1         |  at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:53)
middleware_1         |  at org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:58)
middleware_1         |  at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
middleware_1         |  at java.base/java.lang.reflect.Method.invoke(Method.java:580)
middleware_1         |  at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:91)
middleware_1         |  at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:53)
middleware_1         |  at org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:58)
middleware_1         |  at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
middleware_1         |  at java.base/java.lang.reflect.Method.invoke(Method.java:580)
middleware_1         |  at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:91)
middleware_1         |  at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:53)
middleware_1         |  at org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:58)
middleware_1         |  at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
wilkinsona commented 10 months ago

@ghevge Please see the Spring Framework wiki for an example of how to configure the parameters compiler argument.

The java.lang.StackOverflowError looks like a misconfiguration with the JarLauncher being configured to launch itself. Do you have any customization in your pom for the application's main class or start class?

ghevge commented 10 months ago

@wilkinsona thanks for your reply! I've already checked that page. As I've mentioned above, I am using spring-boot-maven-plugin, so what is mentioned in the wiki page, doesn't work for my case. Apparently what I have to do to enable that flag for this plugin, is to inherit the spring-boot-starter-parent pom (as I've also mentioned above). But that is causing the StackOverflowError.

In my pom I have no customizations in regards to the application's main class and/or start class. I've already added a snippet of my pom above showing the plugin section.

The resulting jar is an executable jar, which is started using this command line:

exec java -jar $JAVA_EXTRA_OPTS -Dspring.config.additional-location=optional:file:$CONFIG_OVERRIDE_DIR -Dspring.profiles.active=$JAVA_SPRING_PROFILES $APP_JAR

where: $CONFIG_OVERRIDE_DIR="path to config dir" $APP_JAR="middleware-exec.jar" $JAVA_SPRING_PROFILES="myprofile" JAVA_EXTRA_OPTS= "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5555 -Dlogging.config=classpath:/log4j2-plaintext.xml -XX:MaxRAMPercentage=95 -XX:+ExitOnOutOfMemoryError"

wilkinsona commented 10 months ago

Unless you're using AOT (which you haven't mentioned), Spring Boot's Maven plugin isn't responsible for performing any compilation. Compilation with parameters needs to be configured on Maven's compiler plugin. Unfortunately, in complete snippets from your pom aren't sufficient for us to be able to help you. If you would like us to spend some more time investigating, please spend some time providing a complete yet minimal sample that reproduces the problem. You can share it with us by pushing it to a separate repository on GitHub or by zipping it up and attaching it to this issue.

ghevge commented 10 months ago

@wilkinsona finally found my problem!

So it seems that if you copy and paste blindly the pom snippet from the wiki page you provided, the resulting jar will exhibit the behavior I've initially mentioned.

If I add a version tag to that snippet, the resulting build works as it used to work with older spring-boot versions.

I think the wiki page must be updated so that others won't fall into the same pitfall as I did...

Thanks for your support! I will close this issue once I will get your opinion on the wiki update.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
   <version>3.11.0</version>
    <configuration>
        <parameters>true</parameters>
    </configuration>
</plugin>
wilkinsona commented 10 months ago

Support for <parameters> was added in 3.6.2 of the compiler plugin in 2017. I'll leave it up to the Framework team to decide if they think it's worth updating their wiki to mention this (cc @snicoll). As there's nothing for us to do on the Boot side, I'm going to close this one.

snicoll commented 10 months ago

If I add a version tag to that snippet, the resulting build works as it used to work with older spring-boot versions.

So it looks like your project has pinned a very old maven compiler plugin version. Trying to paste the snippet and looking down such an old version leads to the following for me:

[WARNING] Parameter 'parameters' is unknown for plugin 'maven-compiler-plugin:3.6.1:compile (default-compile)'

We can't hardcode a version in the release notes because that doesn't look like a good idea to give the impression that a particular version is required. In reality any version more recent that 3.6.2 would work. Given it's 6+ years old, that looks like a safe assumption to me.

ghevge commented 10 months ago

@snicoll at least you can put a version placeholder, if you don't want to provide a version value. to make other aware. It will be a big time saver. I would have saved a couple of hours of digging into the problem, if the version tag would have been there in the first place.