集成nacos2.2.1出现的错误汇总

总结

1.jdk问题 jdk要一致

2.idea使用问题 idea启动nacos要配置,idea启动类要启动两次,并配置两次vm参数

3.项目依赖问题 依赖要正确添加,有的模块就是不能用公共模块的pom配置,需要独立配置,先后启动顺序也要注意变换

  1. properties文件内容 一定要给本地初始值,不能就启动不了;同时要和网站上配置的dataId对应,还有命名空间也要对应

流程简介:

  1. idea里打开nacos

2. 官网创建配置

打开官网 https://nacos.io 或者你自己的console网址,在启动标志右边会给出,直接ctrl+点击可进入网址。密码和用户都默认nacos,更改的话在nacos下载文件的appliaction,properties里可改。

根据需求进行填充,这里要和后面项目中的bootstrap.properties和controller对应,可直接照抄。

  1. 确定jdk 系统jdk idea项目jdk maven jdk 项目pom.xml jdk 都要一致,语言也一致

jdk 8,17 都可以,我用的17。

  1. 依赖添加:springboot版本为3.0.0,springcould 2022.0

父模块train新增依赖:

java 复制代码
          <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2022.0.0.0-RC1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

需要用到nacos的子模块member增加依赖:

java 复制代码
        <!-- 配置中心 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!-- 注册中心 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--SpringBoot 2.4版本之后 SpringCloud 2020,需要引入该依赖,才能读取bootstrap文件-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>
  1. member模块 com.jiawa.train.member.controller包下,测试文件和配置文件添加:
  1. MemberApplication类 报错的话,执行mvn clean install,success就不会爆红了
java 复制代码
@SpringBootApplication
@ComponentScan("com.jiawa") //根据自己的包结构更改
@MapperScan("com.jiawa.train.*.mapper") //如果你没有生成mapper持久层包可以不要这个注解,根据自己的包结构更改
public class MemberApplication {


    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(BusinessApplication.class);

        //下面几行都可以去掉,是打印日志
        Environment env = app.run(args).getEnvironment();
        LOG.info("启动成功!!");
        LOG.info("测试地址: \thttp://127.0.0.1:{}{}/hello", env.getProperty("server.port"), env.getProperty("server.servlet.context-path"));

    }
}
java 复制代码
package com.jiawa.train.member.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController //必须加
@RefreshScope //实时更新可不加
public class TestController {

    @Value("${test.nacos}")
    private String testNacos;

    @GetMapping("/hello")
    public String hello() {
        return String.format("Hello %s!", testNacos);
    }
}

//这里定义方法为hello,参数为test.nacos 初始值是配置文件里的1
  1. resources下

application.properties文件:

java 复制代码
server.port=8001 //必须要,自己定义

test.nacos=1 //自定义,本地配置,必须给初始值,不然启动不了,如果读取不到远程也会拿这个值

-----------------------------------------------------------------------------------
server.servlet.context-path=/member //这个是配置了gateway模块转发需要,可以去掉

# 数据库连接 可以去掉这部分
spring.datasource.url=jdbc:mysql://localhost:3306/train_member?time_zone="+8:00"
spring.datasource.username=train_member
spring.datasource.password=member
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# mybatis xml路径 可以去掉
mybatis.mapper-locations=classpath:/mapper/**/*.xml
logging.level.com.jiawa.train.member=trace

bootstrap.properties文件:

java 复制代码
##下面三个值拼起来就是 页面上我们配置的dataId:member-dev.properties
spring.application.name=member
spring.profiles.active=dev
spring.cloud.nacos.config.file-extension=properties

## nacos 地址 127.0.0.1是本机默认地址,等效于localhost;8848是nacos默认端口
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

# nacos 命名空间 默认是public 这两行可以不写
spring.cloud.nacos.config.namespace=public
spring.cloud.nacos.discovery.namespace=public

3.启动项添加 VM参数,才能和nacos连接起来

第一次运行:

同一个地方,修改vm参数为 -Dspring.profiles.active=dev,再运行一次,每次修改了内容都要重新运行,(如果你配置了热部署,会启动,但是还是要手动刷新,才能正确运行拿到正确内容)

正确启动:出现127.0.0.1_8848才是成功,如果没有,就算没有报错,也是失败了,只会读取本地内容,不会读取远程的配置。

这里我的启动成功,但启动的是common模块,不是我想要的member模块,

原因是member还没有成功过,我就把member模块里的pom.xml新增内容放到common模块(这样所有模块都可以共用配置,member模块是已经引入了common模块的),同时添加了spring.application.name=common。

解决方法:在common模块pom里去掉新增配置,并去掉spring.application.name=common;在member模块里添加回新增配置,重新运行出现member再把pom配置,spring.application.name=common添加回去。

  1. 查看是否拿到远程,并是否有服务

1)网址:localhost:8001/member/hello

  1. 官网:
相关推荐
hqxstudying12 分钟前
Java异常处理
java·开发语言·安全·异常
代码老y13 分钟前
ASP.NET Core 高并发万字攻防战:架构设计、性能优化与生产实践
后端·性能优化·asp.net
我命由我123453 小时前
Kotlin 数据容器 - List(List 概述、创建 List、List 核心特性、List 元素访问、List 遍历)
java·开发语言·jvm·windows·java-ee·kotlin·list
武子康5 小时前
Java-80 深入浅出 RPC Dubbo 动态服务降级:从雪崩防护到配置中心秒级生效
java·分布式·后端·spring·微服务·rpc·dubbo
舒一笑6 小时前
我的开源项目-PandaCoder迎来史诗级大更新啦
后端·程序员·intellij idea
@昵称不存在7 小时前
Flask input 和datalist结合
后端·python·flask
zhuyasen7 小时前
Go 分布式任务和定时任务太难?sasynq 让异步任务从未如此简单
后端·go
东林牧之8 小时前
Django+celery异步:拿来即用,可移植性高
后端·python·django
YuTaoShao8 小时前
【LeetCode 热题 100】131. 分割回文串——回溯
java·算法·leetcode·深度优先
源码_V_saaskw8 小时前
JAVA图文短视频交友+自营商城系统源码支持小程序+Android+IOS+H5
java·微信小程序·小程序·uni-app·音视频·交友