SpringCloud网关问题汇总
1.*.jar中没有主清单属性
在开发SpringBoot GateWay应用程序的时候,debug的时候还是很好的,但是打包之后,使用java -jar运行,就出现了错误:no main manifest attribute 。有带你抓狂啊。
解决方法,就是在build中添加了spring-boot-maven-plugin插件
1 | <build> |
1.Unable to execute jar- file: “no main manifest attribute”
2.[Solved] No Main Manifest Attribute, In Jar Maven And SpringBoot (解决方法在这里面找的)
3.maven生成jar,提示没有“没有主清单属性” (这个方法没有试)
2.Could not load [org.springframework.cloud.alibaba.nacos.discovery.NacosWatch]
使用spring oauth2和nacos开发了spring cloud权限认证,本地debug都是好的,但是部署到服务器上就报错,应用程序启动不起来。
我尝试了很多方法,修改pom.xml,重新写Application启动类。在本机上安装tomcat,然后运行打包,部署,都是好的,重新升级nacos下载了最新的nacos,从1.2.0-beta.1,升级到1.3.2,还是不行。
最后的解决方案就是我连tomcat也升级了,从9.0.31升级到9.0.37,重新配置了TOMCAT_HOME和CATALINA_HOME两个变量。
奇迹竟然出现了,竟然真的可以部署了,而且错误莫名其妙的就消失了。
但是问题随之也产生了第二个问题,就是部署到tomcat中的应用程序无法在nacos中注入相应的服务。
1.SpringCloud踩坑指南(错误解决)之eureka启动报…
2.Integration spring-cloud-starter-alibaba-nacos-config problem
3.spring cloud 配置启动失败
3.lb配置的匹配规则
这里我在开发的时候遇到了一个奇怪的问题,就是两个独立的网关应用,都在nacos中注册了服务列表,一个叫ruoyi-system服务监听9000端口,一个叫system服务监听9002端口。假如我向9000端口发起了/system/user/getInfo请求,理论上会经过ruoyi-system的网关,转发到注册了ruoyi-system的服务地址,请求user/getInfo。
但是实际上并不是这个样子的。当使用nacos进行寻找ruoyi-system的服务的时候,它先找到了服务名为system的服务,并将请求转发到了system的服务上,进行了user/getInfo请求,这个时候system这个微服务可能因为没有实现user/getInfo接口,报错了。
1 | ## 第一个网关配置 |
1.nacos和eureka的服务名不能带下划线_ 否则gateway路由转发会找不到服务从而报错 使用gateway时服务的名字(application.name)不能加下划线,不然会找不到服务实例