在将我的代码从Java 17和Spring-boot 3.1.3升级到Java 21和String-boot 3.2.0之后,我在调用REST API时开始看到如下错误:
更新:在运行了更多的测试之后,使用不同的spring-boot版本与Java 21,我可以告诉这个问题只在spring-boot 3.2.0中可见。
如果我在Java 21中使用spring-boot 3.1.6,系统工作正常。
未指定[java.util.UUID]类型参数的名称,并且在类文件中也未找到参数名称信息。
未指定[java.lang.String]类型参数的名称,并且在类文件中也未找到参数名称信息。
未指定[java.lang. xml]类型参数的名称,并且在类文件中也未找到参数名称信息。
有什么想法是怎么回事?是否有一个Spring启动故障,因为它似乎已经发生在过去?https://github.com/spring-projects/spring-loaded/issues/68
谢谢
PS:在做这次升级之前代码工作正常。除了Java版本和Spring版本之外没有其他变化。
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>
......
型
2条答案
按热度按时间6uxekuva1#
你知道这是怎么回事吗?
一些元工具(例如注解处理器;直接检查类文件的东西,或者使用反射试图从类中收集信息,而不是基于接口和类中的实现方法,而是仅基于结构-例如“任何以字母
get
开头的方法”)需要参数的名称来完成其工作。然而,java-the-language的设置使得参数名是无关紧要的,因此,在基本的java中(就像在旧版本的java中,编译时没有任何标志),它们不会包含在你的类文件中-如果你写:
字符串
然后在类文件中结束的是:
public
,是的,作为一个标志。foo(Ljava/lang/String;I)V
。void
(V
)和两种参数类型(String,I
用于int
),当然还有方法名。但不是x
或y
。因为参数名在各种情况下都很方便,现在java编译器倾向于默认包含这些信息,但是基本语言设计并不需要它们的存在(例如,在java中,不可能将其称为
foo(x: "Hi", y: 5)
-在许多语言中你可以这样做,在java中,你不能。无论出于何种原因,您获得的类文件不再包含此信息。
有几种解释:
-g:vars
到javac
。你可能需要研究如何告诉你的构建工具来做这件事。这告诉构建工具包括变量名的调试符号。这包括方法参数名。这对每个javac都有效,但是,你可能应该使用...-parameters
选项是新的,也是更好的方法。如果你使用maven,看起来像这样:
型
确切地说,哪个类文件缺少方法参数名--不幸的是,这在粘贴中并不清楚。
您可以使用反射检查它们是否具有它:
型
这将打印'arg 0',这是
.getName()
在此信息 * 不存在 * 时最终执行的操作。第二种解决方法是使用
javap
,即反编译器。它显示arg名称-如果它显示arg0
,arg1
等,则不包含它。如果它显示实际名称,则包含它,并且抛出这些错误的Meta工具可以处理这些文件。nkoocmlb2#
我的解决方案是将以下maven编译器插件部分添加到我的pom中:
字符串