本地运行java程序时,出现 Name for argument of type [java.lang.String] not specified, and parameter name information not found in class file either. 这样的报错,检查程序是没有发现问题。程序代码如下:

@PostMapping("/getMerchByUsername")
public ResultVo<String> getMerchByUsername(@NotBlank String username){
MerchDto merchDto = merchService.getByUsername(username);
if(merchDto==null){
return ResultVo.successData(null);
}
return ResultVo.successData(AesUtils.encryptHexExpire(String.valueOf(merchDto.getId())));
}

前端提交时明明带有参数 username,没办法只好搜索编程了,提示是:由于在参数上未显示使用注解来指定参数名,而编译时没有保留方法参数名,导致无法确定参数名,所以才报错。有说解决方法

一是在方法参数上添加注解。如 getMerchByUsername(@NotBlank @RequestParam(name="username") String username) 但是这种太麻烦了,很多都要添加,不大现实。

二是在编译时保留参数名,为项目添加全局的 -parameters 参数

打开 IntelliJ IDEA设置:从顶部菜单中选择 File -> Settings... (在 macOS 上选择 IntelliJ IDEA -> Preferences...)。

进入编译器设置:在设置窗口左侧,选择 Build, Execution, Deployment -> Compiler -> Java Compiler。

添加编译器参数:在右侧的 Additional command line parameters 框中,输入 -parameters。

保存设置:点击 Apply 和 OK 以保存更改。

验证编译参数:可以通过以下步骤验证配置是否成功应用:

清理并重建项目:从顶部菜单中选择 Build -> Rebuild Project。

检查编译输出:在项目编译完成后,查看编译器输出窗口,以确保 -parameters 参数正确应用。