SpringBoot项目中遇到的问题

找Bug要挨个测试(测试好的部分),然后找到问题部分,对有问题的部分进行修改成最简单的测试,然后找出问题。

不能运行问题,一定要去pom里面配置,然后去maven下的jar路径下去查看,删除重新导入试试。

1、Tomcat中文乱码问题(百度可查)

对于乱码问题,本质原因就一个:字节流解码为字符串时,使用了错误的字符集(和编码所用字符集不一致)

我们来到tomcat目录的conf子目录中,找到一个名为 "logging.properties" 的文件,打开这个文本文件,找到如下配置项:

java.util.logging.ConsoleHandler.encoding = UTF-8

将 UTF-8 修改为 GBK,修改后的效果为:

java.util.logging.ConsoleHandler.encoding = GBK

保存后,重启tomcat。

原因总结:因为windows系统中,其命令行窗口在解码字节数组时,默认使用本地字符集(对于我们就是GBK),而tomcat默认输出的启动信息是通过utf8进行编码的,这就导致编码与解码所使用字符集的不一致,从而出现了乱码情况!

2、MySql卸载问题

卸载mysql后再安装输入mysqld --install 回车后提示The service already exists!

原因:卸载的时候没有卸载干净

1)重新以管理员身份打开cmd

2)输入命令sc query mysql 查看名为mysql的服务

 3)输入命令sc delete mysql,删除该mysql 

4)再执行mysqld --install 就能成功了

3、新建的spring boot项目中,springframework包显示红色未导入进来。

 解决方法:从project struckre中导入新的包即可;从pom.xml中右击reimport。

4、spring boot启动时,出现如下错误:Error starting ApplicationContext(未能配置数据源)

错误原因:第一次创建springboot工程,springboot默认会加载数据库这样的属性信息,由于没有配置数据库的相关信息所以报错,如果没有配置数据库,就在启动类上加入这句@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class })在运行就可以了。

spring boot默认会加载org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration类,DataSourceAutoConfiguration类使用了@Configuration注解向spring注入了dataSource bean。因为工程中没有关于dataSource相关的配置信息,当spring创建dataSource bean因缺少相关的信息就会报错。

两种解决办法:

1)在Application类上加

@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})

2)配置数据源:

例如在application配置文件中:

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://ip:端口号/数据库名称?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8

注意:导入后可能出现的情况,将相关的包导入即可。

5、新建好的spring boot项目中,pom.xml中的maven-project-info-reports-plugin报红出错。

从网上找了各种解决方法,最后发现是setting里build下的maven里maven又自动去了默认c盘的路径(之前本人自己设置了路径在d盘下);结果切换到d盘后,又报错了(吐辽),

解决方法,找到maven的库(本机设置的是d盘的workspace),然后找到相应的文件目录下,\org\springframework\boot\spring-boot-maven-plugin删除掉,然后从idea中右侧的

clean后重新下载,问题解决。右击该红色地区,maven-reimport,会解决很多类似的问题。

6、spring boot内置tomcat无法启动问题。

如题所示,在运行springboot程序时,遇到了无法启动内置tomcat的问题:

此处比较纳闷,新建项目后,居然成功了......

7、spring boot configuration annotation processor not configured错误的解决方案。

解决方法:在pom.xml中增加如下依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

然后会出现spring-boot-configuration-processor发红,右击后点击maven-reimport即可。

8、在进行封装配置信息练习时,出现错误Failed to bind properties under 'author' to com.inspur.springboot2.author,如下:

经过检查,居然是author里面set方法打错了。。。

9、注意:在配置application.yml时,一定要注意格式问题!!!

10、刚配置好的spring boot启动时,遇到了Failed to load property source from 'file:/D:/Major/tools/IDEA/ideaWorkspace/weifuwu/target/classes/application.yml' (classpath:/application.yml)错误,从console中找到错误的位置:

解决方案:1)查看是否是格式问题,去yml找出问题的位置检查一下。2)使用单引号‘’或者“”双引号,将响应的配置包起来。

11、Could not autowire. No beans of 'AccountMapper' type found. 

\

网上也有很多错误解决方式,这里就说一下本人遇到问题的解决方式:即在Mapper层加入@Repository即可。

12、application context not configured for this file错误。

解决方法:进入到Project Structure

13、加载数据库驱动的语句更改 com.mysql.cj.jdbc.Driver后仍然报错。

问题解决:在检查自己的mysql版本后,发现自己的版本是5.x,接下来从xml和properties文件中将驱动改为com.mysql.jdbc.Driver。然后从pom中将mysql驱动版本改为5.x,此处在idea中没有删除,作者来到存放驱动的路径下,当你鼠标指向相应的驱动,会自动显示位置。

然后将驱动删除和修改。

14、WARN: Establishing SSL connection without server's identity verification is not recommended.

在修改完pom里mysql的版本后,出现了以上问题,如图:

解决方法:在相应的xml中,在数据库配置后加一行

useUnicode=true&characterEncoding=utf8&useSSL=true

15、关于maven中的pom.xml中的依赖包导入不进来的问题。

去maven中conf的setting里配置相应的下载路径。

16、java: 程序包org.springframework.boot不存在,从网上看到的可行方法。

17、导入的包找不到的问题。背景:从git上pull了一下新的代码,结果发现小伙伴加了一个包,再经过导入后,运行还是发现有问题,找不到该包。


解决方法:将导入的libraries从project structure中移除,然后再重新手动导入(复制粘贴)到lib目录下,并从pom中添加依赖。这里依赖的添加小技巧,用解压软件解压,看里面的配置信息,并添加到pom中。

18、spring boot中出现unfound数据库问题。

背景:因为需要从数据库导出并且进行AES、MD5加密和相关信息的添加等一系列操作,所以测试时需要频繁切库,就想着把之前同事写死的数据库用一个全局变量给替换出来,但是替换完成后出现了无法找到数据库的问题。当我把全局变量删除并且回复原有代码状态后,又重新运行,依然还是报此错,经过多次尝试,最终发现,因为数据库的导出,需要切换库,在导出之前的库需要就在yml里找到对应的库名进行修改,然后再切到需要导入的库(即还是在yml中将库名改回来),重新启动即可。

19、SpringBoot数据库导出-加密-导入后出现文件大小变更的问题。

原表:
导出加密解密导入后:
背景:在用Java对数据库进行导出-压缩-加密-导入另一个数据操作时,出现文件大小变更问题。
解决思路:第一,设置断点并添加sysout输出语句,单步运行输出每一步处理的文件大小。对导出的文件进行大小的记录,然后在导入文件的解析前再次进行文件大小的记录,检验问题是否是在文件压缩导出-文件解压导入这个阶段,结果发现此过程没有问题,文件大小未变,那么问题就出在文件加密之前,或者是文件导入解压之后。第二,对导出的文件进行内容的查看(因为我文件已经加密,所以将加密代码注释掉,并在代码中找到rar的解压密码),查看文件内容后发现,其他类型都可以看到,但是在导出的BLOB是BYTE类型该处为密文,复制此处密文到网页找在线base64解密工具,解密后发现内容显示正常。
解决方法:因为文件是BLOG文件在导出时为BYTE类型,byte[]类型在序列化的时候,会转为json类型,会自动base64加密,如果不进行解密则会出现文件大小变更的问题;在相应的Service解析文件部分,加入base64解密代码。
 

                    if (next1.equals("admindb.act_ge_bytearray")) {
                        for (Map<String,Object> map : adminList1){
                            Base64.Decoder decoder = Base64.getDecoder();
                            String bytesStr = map.get("BYTES_").toString();
                            byte[] bytes = decoder.decode(bytesStr);
                            map.put("BYTES_", bytes);
                        }
                    }

20、swagger调试时,出现null pointerException:null异常。

问题背景:swagger进行调试的时候,从swagger传入参数,出现以上问题,但是又不影响程序的执行只是报此错误。
解决方法:本人这里遇到的是用户未登录错误,在swagger上登录上系统的账号即可,即从一个打开的工程前端,进入f12,找到headers中的authorization复制进去。

21、com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:Communications link failure代码运行错误。

问题背景:从gitlab上切换分支以后,出现以上错误。


问题原因:因为切换了分支,从git上重新拉取了代码,(不知道为什么idea没有提示冲突提示),默认将我的bootstrap.yml和application-dev.yml给重新拉取了,从而我的本地设置都没有了。导致了这个错误。
解决方法:从两个配置文件中修改自己的链接信息。

22、Error querying database.  Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'ORG_CODE' in where clause is ambiguous问题。


问题描述:前端页面查询出现查询时,用户只能查询本级及下级(这是一个按钮)的请求,查看本级(另一个按钮)时则页面返回为空。
问题排查:首先从前端页面进入f12,查看有问题的后台调用方法,发现方法返回的response里为空。则根据Request URL,找到对应的后端接口,然后进行数据传送的查看,找到问题出现的语句。
问题解决:找到有问题的语句后,首先我们先看控制台给我们报错的内容,翻译过来就是在sql中org_cod字段模糊不清,然后我们从有问题的语句,点进它调用的方法,依次进入到mapper里面,查看sql内容。接下来,我们打开navicat,(小技巧)将提示的错误(箭头代码)复制到navicat中,并点击“美化”进行自动分行,然后点击运行。即可看到查找org_cod时报错,发现是联查时两个表中都有org_cod字段所致。找到问题后,进行修改,我们返回到service中出现问题的语句,找到它调用的entity实体,进入里面方法比较多,我们再来到相应的mapper.java页面找到调用的sql方法,然后从entity实体中搜查该方法,找到后,修改查询的org_cod的名为其它(主要是为了区分开)即可。

23、文件上传中的probably not a zip file or a corrupted zip file问题


如图所示,在进行文件的上传时,出现以上错误。这个问题的原因就是,用户下载了文件后对文件进行了命名的更改,导致出现这个错误。

24、从git导出项目后出现项目启动不起来的问题。

背景:如题,项目在启动过程中遇到了项目启动不起来,根据console的报错提示,是error querying database。

通过提示,可以知道是在数据库连接的过程中出现了问题,原因是由于,从git上获取的代码将本地配置代码更新了,找到自己的数据库配置代码(本人是application中)然后改成正确的URL地址即可。

25、出现java.net.UnknownHostException:eureka错误

解决方法:是由于程序找不到eureka的入口,找到配置eureka的配置代码(本人是bootstrap)然后进行url的修改。

26、出现:你的软件已经终止了一个已建立的连接。

问题如图所示,从网上查找,有说项目重复启动问题的,有说是submit重复提交问题的,这里记录一下自己的问题,是application配置中redis地址配错了,导致出现上述问题,修改为正确地址后即可解决。

27、在controller中出现修改提示Make 'IdtyService.sysList' static。

问题如图所示,今天遇到一个问题,就记录了下来,错误就是IDEA提示让修改sysList方法为静态类型。这个原因很简单,一句话总结就是开头字母小写代表对象,大写代表类型,这里的IdenSyrvice开头字母改成小写即可。

28、java通过Process类调用命令时的乱码问题

解决方法:

Process process=new ProcessBuilder(command).start(); 

InputStream in=process.getInputStream();

BufferedReader br=new BufferedReader(new InputStreamReader(in,"gbk"));

这里BufferedReader br=new BufferedReader(new InputStreamReader(in,"gbk"));,一定要设置成GBK!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值