SpringMVC新版本踩坑[已解决]

问题:

在使用最新版本springMVC做项目部署时,浏览器反复500,如下图:

异常描述:

类型异常报告

消息Request processing failed: java.lang.IllegalArgumentException: Name for argument of type int not specified, and parameter name information not available via reflection. Ensure that the compiler uses the '-parameters' flag.

描述服务器遇到一个意外的情况,阻止它完成请求。

例外情况

jakarta.servlet.ServletException: Request processing failed: java.lang.IllegalArgumentException: Name for argument of type int not specified, and parameter name information not available via reflection. Ensure that the compiler uses the '-parameters' flag.

根本原因。

java.lang.IllegalArgumentException: Name for argument of type int not specified, and parameter name information not available via reflection. Ensure that the compiler uses the '-parameters' flag.

问题出现原因:新版本Spring调整了参数

找了一晚上问题所在,发现可能是新版本调整了参数,而spring会自动帮助设置,导致编译时选项"-参数"被禁用。也就是错误信息中的最后提示:Ensure that the compiler uses the '-parameters' flag.

尝试一,在idea编译器中设置指定参数,启用 -parameters 编译器标志:

根据提示,想着试下在编译时做一个配置:

但是在尝试后并未发现有作用,于是继续寻找其他解决方法。

尝试二,在项目pom.xml文件中配置插件:

复制代码
<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.13.0</version>
                <configuration>
                    <parameters>true</parameters>
                    <source>22</source>
                    <target>22</target>
                    <encoding>UTF-8</encoding>
                    <!-- 启用 -parameters 编译器标志 -->
                    <compilerArgument>-parameters</compilerArgument>
                </configuration>
            </plugin>

        </plugins>
    </build>

大部分场景这个设置生效的,但是进行测试后,发现仍然没有用。

尝试三,给参数注解@PathVariable加上value属性:

原代码:

复制代码
public Type test(@PathVariable int var1, @PathVariable int var2){
        ...
        return type;
    }

修改后代码:

复制代码
?
public Type test(@PathVariable(value ="var1") int var1, @PathVariable(value ="var2") int var2){
        ...
        return type;
    }

?

尝试测试,终于看到了久违的200:

至此,终于在各种尝试中解决了问题。

总结:在做参数传递时,需要多留心@PathVariable注解的使用,有时严格按照其使用方法也许是一个好的习惯。

参考文章:升级springboot3.2.0报Name for argument of type java.lang.String not specified, and parameter name inf-CSDN博客

【已解决】java.lang.IllegalArgumentException: Name for argument of type java.lang.Integer not specified-CSDN博客

springMvc:Request processing failed: java.lang.IllegalArgumentException: Name for argument of type java.lang.String not specified, and parameter name information not available via reflectio... - 困到很想醒 - 博客园

感谢以上大佬。

相关推荐
zhougl9963 小时前
Java实现腾讯云开发者社区列表爬虫
java·爬虫·腾讯云
智码看视界3 小时前
Day49-AI微服务化-将大模型能力封装为标准微服务
java·微服务·ai·架构·大模型·sse流式输出·ai中台
Nebula_g3 小时前
JavaSE基础语法:特殊类(特殊情景下的设计模式)
java·开发语言·设计模式
2401_894915533 小时前
Geo 优化源码部署避坑指南:解决访问异常、定位失效、收录卡顿问题
java·服务器·后端·缓存·开源
Dovis(誓平步青云)3 小时前
《 固井工程软件 Cemsol 的数据管理与国产化适配实践》
android·java·开发语言·人工智能
大模型码小白3 小时前
AI安全前沿:AI大模型安全防护的前沿技术
java·网络·人工智能·python·深度学习·学习·安全
evans在进步3 小时前
LeetCode 34:在排序数组中查找元素的首尾位置——Java 两次二分查找详解
java·python·leetcode
@卓越俊逸_角立杰出@3 小时前
java实现Agent+ReAct demo(Spring Boot + Spring AI Alibaba ReAct Agent)
java·spring·react.js
看浪的路人3 小时前
第6讲:SQL 解析器
java·开发语言·数据库
weixin_440784114 小时前
【OkHttp实现原理】
android·java·okhttp