如何解决cloud项目中常见错误
- 错误1:
服务调用时报错
- 服务消费者模块assess通过openFeign调用服务提供者模块hires
- 如下为服务提供者模块hires的控制层接口
@RestController
@RequestMapping("/hires")
public class FeignController {
@Autowired
private UserService userService;
@RequestMapping(value = "/getInfo", method = RequestMethod.GET)
public RespResult getUserinfo(@RequestParam(value = "id") int id){
User userInfo = userService.getUserInfo(id);
return RespResult.success(userInfo);
}
}
- 如下为服务消费者模块assess的service层
@Component
@FeignClient(value = "hires-8081")
public interface UserFeignService {
@RequestMapping(value = "/hires/getInfo", method = RequestMethod.GET)
public RespResult getUserinfo(@RequestParam(value = "id") int id);
}
- 以下为服务消费者模块assess的控制层
@RestController
@Slf4j
public class UserFeignController {
@Resource
private UserFeignService userFeignService;
@RequestMapping(value = "/hi", method = RequestMethod.GET)
public RespResult getUserinfo(@RequestParam(value = "id") int id){
return userFeignService.getUserinfo(id);
}
}
-
错误还原:通过服务消费者模块assess-8082调用hires-8081时报错status 405 reading EmpService#findAll(Integer);
-
错误原因:在调用方法时应使用@RequestParam(value = "id")注入参数
-
错误2:
启动时报错,当前服务没有找到另一个子模块的公共类
解决方案:将公共模块编译打包发布
-
将公共模块打包,引入公共模块包
-
如下为公共模块
-
其他微服务中引入
-
错误3:
分布式微服务启动时报错:'artifactId' with value 'java' does not match a valid id pattern
错误原因:新建项目时项目名中包好空格,pom文件中artifactid中包含空格
-
错误4:
分布式微服务启动时报错:Error: Could not find or load main class
-
错误5:
导入项目后显示红色波浪线,报错等
删除.idea .mvn等文件重新编译打包项目
拉取cloud项目到本地后应先编译打包父工程,再编译打包子项目,否则会报找不到某个公共模块的错误
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。