springCloud集成nacos启动时报错排查

Posted 究极无敌懒人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springCloud集成nacos启动时报错排查相关的知识,希望对你有一定的参考价值。

今早在集成nacos时启动报如下错:

Description:

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

Reason: Failed to determine a suitable driver class


Action:

Consider the following:
    If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
    If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).


Process finished with exit code 1

排查一:检查nacos中配置的database的配置

上面的错误描述明确的说了是datasource的url读不到,那么第一反应是去检查一下是不是配置错误了,nacos中配置的文件检查了datasource的所有属性没有问题

⚠️注意:这里可能会踩坑的是mysql的版本在8以下和8以上driver-class-name是不一样的,8及以上需要在加上cj,还需要在url后面加上时区,这里我检查了一下我的mysql是8.0

 排查二:检查bootstrap.yml的配置是否和nacos中内容一致

既然排除了我的数据库配置没问题,那么就需要检查一下我的项目是否能拉到nacos的配置

对比如下,仔细检查后配置没有问题

排查三:检查有无 spring-cloud-starter-bootstrap依赖

在出问题的时候查阅了多方资料,都忽略了这个,因为检查了自己的pom包里面已经有了spring-cloud-starter的依赖,就没有考虑过加bootstrap的依赖,最后实在解决不了我的错,就报着试一下的心态去加了下面的依赖,好了!

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

为什么要加bootstrap的依赖?

我在项目中新加了一个bootstrap.yml,在这之前我只了解到bootstarp.yml的加载优先级比bootstrap.properties更高,但是springboot项目中如果没有spring-cloud-context或者spring-cloud-starter-bootstrap的依赖的话是不会去读取bootstrap.properties的,只会去读application.properties,

 spring boot 2.4版本以下加

<dependency> 
    <groupId>org.springframework.cloud</groupId> 
    <artifactId>spring-cloud-context</artifactId> 
</dependency>

spring boot 2.4版本以上加

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

FAQ调用应用内支付SDK时报错,如何用tag对问题进行排查和分析

华为应用内支付服务(In-App Purchases,IAP)为开发者提供便捷的应用内支付体验和简便的接入流程。开发者的应用集成IAP SDK后,调用IAP SDK接口,启动IAP收银台,即可实现应用内支付。在集成过程中,开发者可能会遇到报错的问题,这时我们可以通过查找日志中的tag的方法对问题快速进行排查和定位,以下我们会结合两个实际问题来看如何使用这个方法。


问题一:某开发者调用华为应用内支付SDK,拉起收银台页面,提示“当前支付服务不可用,请稍后再试”。具体参考下图:

【FAQ】调用应用内支付SDK时报错,如何用tag对问题进行排查和分析_错误码

问题分析

1.首先我们确认调用的是IAP哪个接口。 通过查看开发者给的日志我们发现调用的是非PMS接口(通过过滤IapClientImpl,我们可以查询调用的接口名)

【FAQ】调用应用内支付SDK时报错,如何用tag对问题进行排查和分析_应用内支付_02

2.如果是pms,那么调用的收银台接口名为createPurchaseIntent,如果是非pms接口,则调用的接口名为createPurchaseIntentWithPrice。 3.根据对话框提示支付服务不可用,可能是支付服务api开关未打开或者某些地区不支持支付。按照这个思路我们进行定位,在日志中搜索tag: “hms_pay”:

【FAQ】调用应用内支付SDK时报错,如何用tag对问题进行排查和分析_应用内支付_03

日志显示当前的服务地是法国,但目前应用内支付服务购买非PMS商品只支持中国大陆,所以会提示支付不可用。

【FAQ】调用应用内支付SDK时报错,如何用tag对问题进行排查和分析_错误码_04

解决方法

在应用市场将服务地切换回国内,具体操作如下:应用市场 -> 设置 –> 国家/地区 –> 中国。

【FAQ】调用应用内支付SDK时报错,如何用tag对问题进行排查和分析_应用内支付_05

问题总结

开发者在调试过程中,如果出现接口不通,或者提示错误时,可以使用以下tag来进行问题定位:

HMSSDK: 可以通过此tag查询到​​HMS Core SDK框架侧​​是否异常,如6003,6004,90713XXXX等错误码,当然也会包含IAP SDK侧错误码。如60002,60050等

【FAQ】调用应用内支付SDK时报错,如何用tag对问题进行排查和分析_开发者_06

【FAQ】调用应用内支付SDK时报错,如何用tag对问题进行排查和分析_应用内支付_07

hms_pay: 如果出现60002,60050等​​IAP SDK侧错误码​​,可以通过IAP APK侧来分析可能出现的问题,即可以用该tag进行后续APK侧日志的定位分析。

【FAQ】调用应用内支付SDK时报错,如何用tag对问题进行排查和分析_错误码_08

Network-Request:这个tag其实也属于hms_pay下面的,属于​​服务测返回的错误码​​,我们可以根据服务侧返回的错误码以及错误描述,对照服务测文档进行初步排查和定位。如8、9、11、12等错误码。

【FAQ】调用应用内支付SDK时报错,如何用tag对问题进行排查和分析_应用内支付_09

问题二:某位开发者在调用“isEnvReady“方法时报错,提示“本应用未在当前国家/地区发布”具体参考下图:

【FAQ】调用应用内支付SDK时报错,如何用tag对问题进行排查和分析_开发者_10

问题分析

首先我们在日志上查找Tag 为HMSSDK 和 hms_pay, 发现60007错误码,对比业务错误码,提示商品配置的地区没有分发到该国家。

【FAQ】调用应用内支付SDK时报错,如何用tag对问题进行排查和分析_错误码_11

我们根据错误码提示去AGC网站上查询发布国家和地区,发现目前应用发布地设置在欧洲,但当前登录的帐号在中国大陆,所以会提示该错误。

【FAQ】调用应用内支付SDK时报错,如何用tag对问题进行排查和分析_开发者_12

解决方法

打开AGC网站,在应用上架 –>准备提交页面,将发布国家或地区勾选上中国大陆(如果想在某个国家或地区上架,需要勾选上对应国家或地区),勾选后点击保存,变更后一般在几个小时内会生效。

【FAQ】调用应用内支付SDK时报错,如何用tag对问题进行排查和分析_错误码_13

问题总结

和问题一的定位思路基本一致。根据错误码来进行初步定位。首先要根据客户端错误码判断可能存在的问题,如果我们已经拿到对应的客户端错误码,那么根据官网的错误码含义和解决方案处理即可。

【FAQ】调用应用内支付SDK时报错,如何用tag对问题进行排查和分析_开发者_14

了解更多详情>>

访问​​华为开发者联盟官网​

获取​​开发指导文档​

华为移动服务开源仓库地址:​​GitHub​

关注我们,第一时间了解 HMS Core 最新技术资讯~

以上是关于springCloud集成nacos启动时报错排查的主要内容,如果未能解决你的问题,请参考以下文章

FAQ调用应用内支付SDK时报错,如何用tag对问题进行排查和分析

FAQ调用应用内支付SDK时报错,如何用tag对问题进行排查和分析

springcloud项目使用debug模式启动的时候,报nacos的异常

CXF集成spring启动时报错,大家帮忙看一下。

SpringCloud - Spring Cloud Alibaba 之 SkyWalking 分布式链路跟踪;跨多服务追踪,集成日志(十五)

Spring中使用集成MongoDB Client启动时报错:rc: 48