未指定 [java.lang.String] 类型的参数名称。确保编译器使用“-parameters”标志

问题描述 投票:0回答:1

我们升级到使用 Spring Framework 6.0.2 的 Spring Boot 3.2.2,并且知道他们删除了一个使用字节码来确定 @PathVariables 和 @RequestParams 参数名称的类,我尝试找到所有这些并输入我们所有控制器中的参数名称,我都得到了它们,但仍然在某个地方出现此错误。我们使用的是Groovy,所以我们的maven插件是Groovy插件,到Java插件,所以Spring文档中给出的解决方案并没有涵盖groovy插件。但我也尝试将 -parameters 配置添加到 Groovy 插件中

       <plugin>
            <groupId>org.codehaus.gmavenplus</groupId>
            <artifactId>gmavenplus-plugin</artifactId>
            <version>1.13.1</version>
            <configuration>
                <parameters>true</parameters>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>addSources</goal>
                        <goal>addTestSources</goal>
                        <goal>generateStubs</goal>
                        <goal>compile</goal>
                        <goal>generateTestStubs</goal>
                        <goal>compileTests</goal>
                        <goal>removeStubs</goal>
                        <goal>removeTestStubs</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

但我们仍然收到这些错误。

我们如何解决这个问题?

spring spring-boot gmavenplus
1个回答
0
投票

参见Spring 6.x迁移指南#参数名称保留

LocalVariableTableParameterNameDiscoverer
已在 6.1 中删除。 因此,Spring 框架和 Spring 产品组合中的代码 框架不再尝试通过解析来推断参数名称 字节码。如果您遇到依赖注入、属性等问题 绑定、SpEL 表达式或其他依赖于名称的用例 参数,您应该使用常见的编译 Java 源代码 Java 8+
-parameters
参数名称保留标志(而不是 依赖于
-debug
编译器标志)以兼容
StandardReflectionParameterNameDiscoverer

© www.soinside.com 2019 - 2024. All rights reserved.