java微服务的异常
1.依赖异常
须知:
【 如果项目的结构是单个模块的,需要给每个单个模块添加起步依赖 spring-boot-starter-parent,指定版本 】
【 如果项目的结构是子父模块的,只需要给父模块添加起步依赖 spring-boot-starter-parent,指定版本,所有子模块引入父模块就行 】
配置文件
- 你指定了该项目的启动端口号是 8080
- 你使用了阿里的
nacos
注册中心组件,定义了服务名weather-service
,及其 Nacos注册中心的地址及端口号localhost:8848
- 定义了集群 cluster-name :SH
- 定义了隔离空间 namespace:bf 6106 fa-ed 78-4 a 43-bf 22-779594 e 16 a 4 c
依赖文件
- 这里你可以看出该项目的结构是单个模块, 所以得加起步依赖 spring-boot-starter-parent,指定版本
- 这里使用了 nacos 注册中心,得加
spring-cloud
依赖和spring-cloud-alibaba
依赖 ,spring-cloud-alibaba
是根据spring-cloud
开发的,所以使用spring-cloud-alibaba
的所有组件都必须添加spring-cloud
依赖,还得加spring-cloud-starter-alibaba-nacos-discovery
nacos 的注册中心依赖- 而底下使用了
<dependencyManagement> <dependencies> 标签
spring-cloud-alibaba-dependencies ,spring-cloud-dependencie
统一了其组件下所有的依赖版本
server:
port: 8080
spring:
#注册服务到Nacos
application:
name: weather-service #服务名
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos注册中心的地址及端口号
cluster-name: SH
namespace: bf6106fa-ed78-4a43-bf22-779594e16a4c
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.itcast</groupId>
<artifactId>xiaohua-service</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<!--
war: 传统web项目
jar(默认):java项目 spring boot项目统一打包方式jar
pom:父工程-->
<!--jdk编译版本-->
<properties>
<java.version>1.8</java.version>
</properties>
<!--spring boot父工程-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<!-- 导入nacos注册中心组件-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--spring boot整合junit起步依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions> <exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--spring boot整合springmvc起步依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--spring boot整合mp起步依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
<!--lombok依赖-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--fastjson的依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.76</version>
</dependency>
<!--apache工具包,提供大量工具类,简化操作,eg:判断字符串是否为""字符串...
StringUtils.isEmpty() StringUtils.isBlank() --> <dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--durid连接池依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.23</version>
</dependency>
<dependency> <groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>
<dependencyManagement> <dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency> <groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build> <plugins>
<!--spring boot项目打jar包插件
只有引入该插件,打成jar包才可以使用java -jar 运行
-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.4.5</version>
</plugin>
</plugins>
</build>
</project>
2. Nacos 程序没启动
问题
当 Nacos 程序没启动时/ Nacos 没有指定单体启动时(Nacos 默认集群启动) ,会导致 Nacos 服务启动失败
2024-11-02 00:08:41.354 ERROR 37164 --- [ main] c.a.c.n.registry.NacosServiceRegistry : nacos registry, weather-service register failed...NacosRegistration{nacosDiscoveryProperties=NacosDiscoveryProperties{serverAddr='localhost:8848', endpoint='', namespace='', watchDelay=30000, logName='', service='weather-service', weight=1.0, clusterName='DEFAULT', namingLoadCacheAtStart='false', metadata={preserved.register.source=SPRING_CLOUD}, registerEnabled=true, ip='192.168.240.94', networkInterface='', port=8080, secure=false, accessKey='', secretKey=''}},
java.lang.IllegalStateException: failed to req API:/nacos/v1/ns/instance after all servers([localhost:8848]) tried: failed to req API:localhost:8848/nacos/v1/ns/instance. code:500 msg: java.net.ConnectException: Connection refused: connect
解决方案
- 查找 nacos 是否启动
- 启动 Nacos 服务,指定其单体执行
3. Linux 的静态 ip 失效
查询 ip addr ,静态ip 没分配
尝试重启网络,无效果
解决方案如下
当你的才华配不上你的野心,努力的时候到了!