# 常见报错: **注意:新手朋友们请仔细阅读下面几步,80%的新手遇到的报错都是这个!!!!!!!!!!!!** ## 问题: 启动时,报错 Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource cloud be configured. 。 ![](https://img.kancloud.cn/3a/66/3a662f53095360291f25304bab149cb7_2716x618.png) 答: 1. 检查 `src/main/filters/config-dev.properties` 里 `nacos.namespace` 中的值,是否为自己在naocs中新建的命名空间id 2. 检查 `nacos`! `nacos`! `nacos`!(重要的事情说3遍) 中的 的`配置列表` - 切换到命名空间 `zuihou` - 查看 `mysql.yml` 和 `zuihou-**-server-dev.yml` 里面关于数据库的配置,是否正确. 3. 确定一下,是否在在 IDEA 中执行过 `clean insatll -P dev ` 编译命令! (这一步很关键!)(如果是生产环境jar运行,请执行clean insatll -P prod, 并且修改第一步的src/main/filters/config-prod.properties文件) 4. 打开`zuihou-authority/zuihou-authority-server/target/classes/bootstrap.yml` 文件,检查一下 `@nacos.ip@` 、`@nacos.port@` 、`@nacos.namespace@` 、`@nacos.username@` 、`@nacos.password@` 等 `@xx@` 相关的表达式是否替换成具体的值了。 (如果是jar运行,解压工具解压开看bootstrap.yml文件) 5. 确认一下nacos中,所有的配置文件,`点击编辑`-`配置格式` 修改为YAML 类型。(nacos的bug,导致导入的配置会变成TEXT类型) 6. 确认一下nacos中,**zuihou命名空间下**,mysql.yml 、redis.yml中,mysql 和 redis相关的 信息是否配对。 7. 请注意:配置文件一定是导入新建的 **zuihou** 命名空间!!! 8. 请注意:配置文件一定是导入新建的 **zuihou** 命名空间!!! 9. 请注意:配置文件一定是导入新建的 **zuihou** 命名空间!!! ## 问题: 启动时,报如下错: ~~~java org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 1 at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:254) ~[snakeyaml-1.19.jar!/:na] at org.yaml.snakeyaml.reader.StreamReader.<init>(StreamReader.java:58) ~[snakeyaml-1.19.jar!/:na] at org.yaml.snakeyaml.Yaml.loadAll(Yaml.java:537) ~[snakeyaml-1.19.jar!/:na] at org.springframework.beans.factory.config.YamlProcessor.process(YamlProcessor.java:166) ~[spring-beans-5.0.12.RELEASE.jar!/:5.0.12.RELEASE] at org.springframework.beans.factory.config.YamlProcessor.process(YamlProcessor.java:139) ~[spring-beans-5.0.12.RELEASE.jar!/:5.0.12.RELEASE] at org.springframework.beans.factory.config.YamlPropertiesFactoryBean.createProperties(YamlPropertiesFactoryBean.java:135) ~[spring-beans-5.0.12.RELEASE.jar!/:5.0.12.RELEASE] at org.springframework.beans.factory.config.YamlPropertiesFactoryBean.getObject(YamlPropertiesFactoryBean.java:115) ~[spring-beans-5.0.12.RELEASE.jar!/:5.0.12.RELEASE] at org.springframework.cloud.alibaba.nacos.client.NacosPropertySourceBuilder.loadNacosData(NacosPropertySourceBuilder.java:100) [spring-cloud-alibaba-nacos-config-0.9.0.RELEASE.jar!/:0.9.0.RELEASE] at org.springframework.cloud.alibaba.nacos.client.NacosPropertySourceBuilder.build(NacosPropertySourceBuilder.java:75) [spring-cloud-alibaba-nacos-config-0.9.0.RELEASE.jar!/:0.9.0.RELEASE] at org.springframework.cloud.alibaba.nacos.client.NacosPropertySourceLocator.loadNacosDataIfPresent(NacosPropertySourceLocator.java:179) [spring-cloud-alibaba-nacos-config-0.9.0.RELEASE.jar!/:0.9.0.RELEASE] at org.springframework.cloud.alibaba.nacos.client.NacosPropertySourceLocator.loadApplicationConfiguration(NacosPropertySourceLocator.java:155) [spring-cloud-alibaba-nacos-config-0.9.0.RELEASE.jar!/:0.9.0.RELEASE] at org.springframework.cloud.alibaba.nacos.client.NacosPropertySourceLocator.locate(NacosPropertySourceLocator.java:88) [spring-cloud-alibaba-nacos-config-0.9.0.RELEASE.jar!/:0.9.0.RELEASE] at org.springframework.cloud.bootstrap.config.PropertySourceBootstrapConfiguration.initialize(PropertySourceBootstrapConfiguration.java:94) [spring-cloud-context-2.0.0.RELEASE.jar!/:2.0.0.RELEASE] at org.springframework.boot.SpringApplication.applyInitializers(SpringApplication.java:628) [spring-boot-2.0.8.RELEASE.jar!/:2.0.8.RELEASE] at org.springframework.boot.SpringApplication.prepareContext(SpringApplication.java:364) [spring-boot-2.0.8.RELEASE.jar!/:2.0.8.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:305) [spring-boot-2.0.8.RELEASE.jar!/:2.0.8.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1242) [spring-boot-2.0.8.RELEASE.jar!/:2.0.8.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1230) [spring-boot-2.0.8.RELEASE.jar!/:2.0.8.RELEASE] at com.tba.sc.gateway.GatewayApplication.main(GatewayApplication.java:15) [classes!/:1.0-SNAPSHOT] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_91] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_91] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_91] at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_91] at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48) [tba-gateway.jar:1.0-SNAPSHOT] at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) [tba-gateway.jar:1.0-SNAPSHOT] at org.springframework.boot.loader.Launcher.launch(Launcher.java:50) [tba-gateway.jar:1.0-SNAPSHOT] at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51) [tba-gateway.jar:1.0-SNAPSHOT] Caused by: java.nio.charset.MalformedInputException: Input length = 1 at java.nio.charset.CoderResult.throwException(Unknown Source) ~[na:1.8.0_91] at sun.nio.cs.StreamDecoder.implRead(Unknown Source) ~[na:1.8.0_91] at sun.nio.cs.StreamDecoder.read(Unknown Source) ~[na:1.8.0_91] at java.io.InputStreamReader.read(Unknown Source) ~[na:1.8.0_91] at org.yaml.snakeyaml.reader.UnicodeReader.read(UnicodeReader.java:125) ~[snakeyaml-1.19.jar!/:na] at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:223) ~[snakeyaml-1.19.jar!/:na] ~~~ 答: 1. 在nacos中删除中文可以处理此问题,但不是最佳方案。 2. 在idea中启动项目时,因为 idea相关配置中设置UTF-8的文件编码格式`file.encoding=utf-8`。打包运行后,该设置需要手动指定,如下: ~~~bash java -D'file.encoding=utf-8' -jar .\zuihou-gateway-server.jar ~~~ ## 问题:很多依赖死活都下载不下来? 答: 由于spring-boot和spring-cloud等版本比较新,所以目前国内的一些仓库还没有新版本的jar。 需要配置spring的maven仓库。 (配置后还是无法下载,就先注释掉settings.xml中其他的仓库,只保留这个) ``` <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> <mirror> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/libs-milestone</url> <mirrorOf>central</mirrorOf> </mirror> ``` ## 问题: 很多类缺少get/set方法? 答:请用IDEA或Eclipse安装`lombok`插件 ## 问题:定时任务为啥要将调度器和执行器合并在一起? 答: 对于中小型项目,对高可用的需求并不是很大,若把调度器和执行器分开部署,会增加部署成本。 ## 问题: 对于window服务器,启动zuihou-jobs-server报找不到表的错, 但数据库中确实有表,只是表名全是小写? 答: 1. SHOW VARIABLES LIKE '%case%'; 查看 lower_case_table_names 是否=2 2. 修改my.cnf(my.ini) 文件增加 : ``` [mysqld] lower_case_table_names=2 ``` >当设置为0时,存储和比较都是大小写敏感的; >当设置为1时,存储时会转换为小写,比较时不区分大小写; >当设置为2时,存储时区分大小写,比较的时会转换为小写。此选项对数据库名和数据表名起作用。 ## 问题: nacos里面配置文件10多个,zuihou-*-server/src/main/resources/*.yml 下面也有 bootstrap.yml、bootstrap-dev.yml、application.yml ,为什么分这么细 答: 建议先网上搜索了解清楚 SpringBoot 项目的 bootstrap.yml、application.yml 的加载优先级, 以及多环境配置 本项目中的,这几个配置文件中出现了相同的key,但不同的value时,value读取顺序时: zuihou-authority-server-dev.yml(nacos) > zuihou-authority-server.yml(nacos) > common.yml(nacos) > bootstrap.yml(resources) 比如:zuihou.port.nginx: ${server.port} zuihou.port.nginx: ${NGINX_PORT:80} 参考1: https://cloud.tencent.com/developer/article/1448393 参考2: https://blog.csdn.net/guochunyang/article/details/89920209 ## 问题: 启动时或者启动后连不上redis ? 答: 1. 检查 `src/main/filters/config-dev.properties` 里 `nacos.namespace` 中的值,是否为自己在naocs中新建的命名空间id 2. 检查 nacos 的`配置列表` - 切换到命名空间 `zuihou` - 查看`redis.yml` 里面关于redis的配置是否正确 ## 问题: 启动时,报dozer 的一系列错误? 答: 项目、jdk、任何的中间件等, 不能安装或存放在有 空格、中文、特殊字符的路径。 否则会有意想不到的报错。 PS: 项目、mysql、redis、jdk、tomcat 开发相关的任何工具、软件、中间件、源码等等, 不能放在 有空格,中文,特殊字符的路径,这应该成为开发最基础的常识。 ## 问题: 启动后,有一些红色的日志,是不是有问题啊? 启动后控制台会打印一些彩色的日志,其中蓝色字体的日志均为正常。注意以下日志: 1. 警告日志(红色),出现以下红色日志时,给人的第一反应就是报错了? 其实不是,这只是SpringBoot 的EndpointId警告这几个端点命名不规范: service-registry、nacos-config、nacos-discovery、histrxy.stream 等, ``` 2019-12-05 11:56:33.312:[ WARN] [main:4241] [o.springframework.boot.actuate.endpoint.EndpointId.logWarning:135] --> Endpoint ID 'nacos-config' contains invalid characters, please migrate to a valid format. 2019-12-05 11:56:33.316:[ WARN] [main:4245] [o.springframework.boot.actuate.endpoint.EndpointId.logWarning:135] --> Endpoint ID 'nacos-discovery' contains invalid characters, please migrate to a valid format. 2019-12-05 11:56:33.875:[ WARN] [main:4804] [o.springframework.boot.actuate.endpoint.EndpointId.logWarning:135] --> Endpoint ID 'service-registry' contains invalid characters, please migrate to a valid format. ``` 2. 警告日志(红色):该警告不知道有啥用。解决方案为:在src/main/resources下添加空的config.properties ``` 2019-12-05 11:56:35.969:[ WARN] [main:6898] [com.netflix.config.sources.URLConfigurationSource.<init>:121] --> No URLs will be polled as dynamic configuration sources. ``` ## 问题:maven 编译时,警告如下: \[WARNING\] The POM for com.alibaba:druid:jar:1.1.21 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details 答:网上说配置JAVA\_HOME即可,但配置后还是不行,解决的朋友告诉一声 ## 问题:前后端均已启动,但输入密码登陆后,提示登陆成功,页面准备跳转时,进度条一致卡主? 答: 1. 使用谷歌浏览器,清空缓存后登录。 2. F12打开浏览器控制台看报错 3. 看后台报错 4. F12 看浏览器Network XHR 类型的请求返回值,是否有报错 5. 在前端代码src/router/index.js, NProgress.start()(110行左右)的位置打断点,调试登录调试一下 ## 问题: 前后端启动后,登录页面的验证码不显示? 答: 1. F12控制台打开,找到验证码的请求地址,看后台返回值是否报错 2. 检查程序是否正常连接 redis 3. debug LoginController.captcha(String key, request) 方法 ## 小技巧: ### IDEA debug jar java -jar -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 zuihou-authority-server.jar