问题一:项目运行不了问题
打开项目后,点击运行显示报错,代码没有问题但始终运行不了程序。
原因:
没添加环境。
解决方法:
使用SwitchHosts工具添加代码运行的配置环境。并且在代码环境中加载刚刚在SwitchHosts工具中配置好的环境。
问题二:未登录问题
在postman中请求url,返回的参数提示未登录。
{
"successful": false,
"code": "401",
"message": "用户未登录,请重新登录!\n uri:…………",
"data": null
}
原因:
因为后端对url地址做了登录校验,如果没有相应的登录参数,就会报错:未登录,自动跳转到登陆页面。
解决:
- 添加token
token:…………
-
添加Id
Id:1
-
添加相关登录参数
…………
问题三:测试类问题
创建测试类运行不起来,检查过代码逻辑没有问题。
原因:
- 没加@SprootBootTest注解
- 缩短命令行方式错误
解决方法:
- 缩短命令行方式:改为JAR清单
- 添加注解
@SpringBootTest(classes = Application.calss,properties = {"spring.profiles.active = dev1"})
JAR清单和@argfile都是用于缩短命令行的方式,但它们的作用和使用方式略有不同。
JAR清单是一种在JAR文件中指定Main-Class和Class-Path的机制。通过在JAR清单文件中指定Main-Class,我们可以使用”java -jar”命令来启动应用程序,而无需指定主类名。此外,JAR清单文件还可以指定Class-Path,用于指定JAR文件的依赖关系。使用JAR清单文件可以使命令行更简洁,但需要在打包JAR文件时进行配置。
@argfile则是一种通过文件来指定命令行参数的机制。我们可以将命令行参数保存到一个文件中,然后使用”@argfile”选项来指定该文件,从而将所有参数传递给应用程序。使用@argfile可以避免命令行过长的问题,同时也可以方便地管理命令行参数。需要注意的是,@argfile选项只能用于”java”命令,而不能用于其他命令。
问题四:feign测试问题
1. 添加……-sdk依赖时,报错缺了很多其他依赖
原因:
猜测是sdk文件包太大了,新建的服务模块缺少了很多依赖包。
解决办法:
新建一个openfeign模块和controller模块,把自己写的feign抽取出来放到opfeign模块,避开skd依赖包,尽量少引依赖包。
2. 调用feign接口时,出现错误:
feign.FeignException$ServiceUnavailable: [503] during [GET] to [http:……] [GetNameFeign#getNameById(Long)]: [Load balancer does not contain an instance for the service ……-service]
原因:
路径中
http://……,……-service不正确,找不到对应的服务
解决办法:
在Feign接口中加入url参数
@FeignClient(value = "……-service",url = "localhost:8080")public interface GetNameFeign { …………}
3. 前端校验问题:
openfeign接口正确,可以通过原地址访问(80端口),但不能通过调用openfeign接口访问(8080)。通过调用feign接口访问的地址(8080)访问的时候,token中的参数传不过来原服务(80端口)。
原因:
后端做了登录校验,接口路径(8080)被拦截器拦截了。
解决办法:
在拦截器中加入路径放行:
registry.addInterceptor(new UserInterceptor()).addPathPatterns("/**") .excludePathPatterns( ………… "/info-by-id/*" );