导图社区 使用IDEA做项目过程中遇到的bug汇总
使用IDEA做项目过程中遇到的bug汇总,本思维导图进行了bug分类并且汇集在该处,需要的可以收藏下。通过大纲查看具体解决方案或者点击使用(推荐)。
编辑于2022-03-16 13:53:11Linux是一套不用付费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。专业性强,主要用于服务器,嵌入式系统,移 动终端系统等
Thymeleaf提供了一个用于整合Spring MVC的可选模块,在应用开发中,你可以使用Thymeleaf来完全代替JSP或其他模板引擎,如Velocity、FreeMarker等。Thymeleaf的主要目标在于提供一种可被浏览器正确显示的、格式良好的模板创建方式,因此也可以用作静态建模。你可以使用它创建经过验证的XML与HTML模板。相对于编写逻辑或代码,开发者只需将标签属性添加到模板中即可。
这是一篇关于Nginx的思维导图,主要内容有1.目标、2.Nginx的安装与启动、3.Nginx静态网站部署、4.Nginx反向代理与负载均衡。
社区模板帮助中心,点此进入>>
Linux是一套不用付费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。专业性强,主要用于服务器,嵌入式系统,移 动终端系统等
Thymeleaf提供了一个用于整合Spring MVC的可选模块,在应用开发中,你可以使用Thymeleaf来完全代替JSP或其他模板引擎,如Velocity、FreeMarker等。Thymeleaf的主要目标在于提供一种可被浏览器正确显示的、格式良好的模板创建方式,因此也可以用作静态建模。你可以使用它创建经过验证的XML与HTML模板。相对于编写逻辑或代码,开发者只需将标签属性添加到模板中即可。
这是一篇关于Nginx的思维导图,主要内容有1.目标、2.Nginx的安装与启动、3.Nginx静态网站部署、4.Nginx反向代理与负载均衡。
bug
bug分类并且汇集在该处
IDEA
解决IntelliJ IDEA控制台输出中文乱码问题
现象
原因
解决
-Dfile.encoding=UTF-8
配置Tomcat VM options值为:-Dfile.encoding=UTF-8
1.打开配置页面,Edit Configurations。
2.在配置项VM options文本框中输入-Dfile.encoding=UTF-8,点击Apply或OK即可。
-Dfile.encoding=UTF-8
3.尝试重启tomcat,乱码问题解决。
设置Inllij idea文件编码格式,设置为UTF-8。File=>Settings=>Editor=>File Encodings
打卡Intellij idea安装目录,在bin目录下的idea.exe.vmoptions和idea64.exe.vmoptions两个文件结尾添加 -Dfile.encoding=UTF-8
ps:若乱码问题依然存在,请尝试继续按以下步骤解决:
1.打开IntelliJ IDEA本地安装目录中bin文件夹下的idea.exe.vmoptions和idea64.exe.vmoptions这两个文件。
2.分别在这两个文件内容的末尾添加-Dfile.encoding=UTF-8
3.打开IntelliJ IDEA>File>Setting>Editor>File Encodings,将Global Encoding、Project Encoding、Default encodeing for properties files这三项都设置成UTF-8,点击OK或者Apply。
4.重启IntelliJ IDEA即可解决乱码问题。
程序包不存在或者找不到符号
问题
新打开一个项目导入依赖之后pom文件不报错,运行就报程序包不存在,但是报错显示的程序包本地仓库里都有
原因
默认情况下,IntelliJ IDEA使用本机IntelliJ IDEA构建器来构建Maven项目,所以就可能存在iea与项目的maven不一致的问题。
解决
install前自动测试
问题
install前自动测试
原因
解决
跳过测试
idea光标变粗变成insert模式
问题
今天写代码时无意中错按了键盘导致光标变粗,无法正常写代码。
解决
研究发现原来是错按了win(窗口)+insert(笔记本F12)组合键,结局办法很简单再次按下组合键便可恢复。
调出Run Dashboard来管理多个项目的启动
过程
效果
onflicts with existing, non-compatible bean definition of same name and class
问题
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.wry.GoodsApplication]; nested exception is org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'baseExceptionHandler' for bean class [com.wry.framework.exception.BaseExceptionHandler] conflicts with existing, non-compatible bean definition of same name and class [com.wry.controller.BaseExceptionHandler]
原因
昨天同事遇到这样一个问题,意思是spring找到 有相同的实现类名在不同的package目录下。
跟踪他的项目代码并未发现问题。 重新给他的maven项目进行maven install一下。 查看打好的war包,发现里面确实存在相同的实现类名的class文件
原因:他之前创建了一个接口的实现类,然后后面挪了个位置,但是重新打包的时候,并没有进行clean一下,导致打出来的war里面的class存在了两个。
解决
在maven父工程, clean一下。 重新打包,问题解决
Error:java: Compilation failed: internal java compiler error
问题
Error:java: Compilation failed: internal java compiler error
原因
解决
1、查看项目的jdk
2、查看工程的jdk
3、查看idea中Java配置
The build could not read 1 project
问题
[INFO] Scanning for projects... [ERROR] [ERROR] Some problems were encountered while processing the POMs: [ERROR] Child module E:\IdeaProject\wry-shop\shop-parent\shop-service\shop-service-search-api of E:\IdeaProject\wry-shop\shop-parent\shop-service\pom.xml does not exist @ @ [ERROR] The build could not read 1 project -> [Help 1]
原因
存在一个不存在的子项目
解决
删除该不存在模块
修改某工程里面的代码后测试,需要重启该工程或者安装总工程
端口占用解决办法
问题
Verify the connector’s configuration, identify and stop any process that’s listening on port 20000, or configure this application to listen on another port.
验证连接器的配置,识别并停止正在侦听端口20000的任何进程,或将该应用程序配置为侦听另一个端口。
原因
由于之前使用改端口的程序不正常关闭,导致端口并未释放,需要手动释放
解决
方法一:
直接重启,一般可以解决该问题,如果重启比较麻烦,可以使用下面的方法。
方法二:
进入cmd,执行命令:netstat -ano
打开任务管理器,选择进程,找到对应的PID为10428的应用,结束进程即可。
配置文件
.conf结尾的配置文件
java.lang.NumberFormatException: For input string:
问题
string转换成int异常
原因
在该类型配置文件中,注释写法错误
错误写法
解决
正确写法
注释和配置写在不同行
端口被占用
问题
Description: The Tomcat connector configured to listen on port 10081 failed to start. The port may already be in use or the connector may be misconfigured. Action: Verify the connector's configuration, identify and stop any process that's listening on port 10081, or configure this application to listen on another port
原因
端口被占用
解决
换一个端口
代码生成器
报错
解决
clean然后重新启动
生成的页面中文乱码
问题
生成的页面中文乱码
解决
-Dfile.encoding=UTF-8
配置Tomcat VM options值为:-Dfile.encoding=UTF-8
1.打开配置页面,Edit Configurations。
2.在配置项VM options文本框中输入-Dfile.encoding=UTF-8,点击Apply或OK即可。
-Dfile.encoding=UTF-8
3.尝试重启,乱码问题解决。
maven
Warning:java: 源值1.5已过时, 将在未来所有发行版中删除
问题
Warning:java: 源值1.5已过时, 将在未来所有发行版中删除
原因
maven默认编译级别JDK为1.5
解决
设置maven编译级别JDK为1.8
在pom.xml
<properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties>
运行jar包报 “XXX中没有主清单属性”
问题
运行jar包报 “XXX中没有主清单属性”
原因
SpringBoot项目打包前忘记导入打包插件
解决
Could not resolve dependencies for project
问题
启动服务的时候
ailed to execute goal on project shop-service-goods: Could not resolve dependencies for project com.wry:shop-service-goods:jar:1.0-SNAPSHOT: Could not find artifact com.wry:shop-common-db:jar:1.0-SNAPSHOT in nexus (http://localhost:8081/nexus/content/groups/public/)
原因
解决
把parent工程先install一下。然后再启动服务
Mybatis
MyBatisSystemException的ReflectionException
症状
java.lang.RuntimeException: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'age' in 'class com.wry.pojo.CheckGroup'
原因
写成了这个数据库表中没有的属性
该数据库表中包含的属性
解决
MyBatis的mapper文件书写的返回值类型错误
错误原因
java.lang.RuntimeException: org.apache.ibatis.binding.BindingException: Mapper method attempted to return null from a method with a primitive return type (long).
出现这一异常的原因是因为MyBatis的mapper文件书写的返回值类型导致的,我的异常所在位置的源代码是这样的:
dao层的.java文件
dao层的.xml文件
由于在调用该sql语句时,在数据库中没有查询到对应语句,其将返回一个空值null,而我的返回值类型是基本类型long,long的初值为0,所以不能将空值赋给long类型(倘若有用到转换器就另当别论了),所以这时我便想到基本类型的包装类,Long刚好是long的包装类,且Long可以赋值为null,所以这时我将返回值类型变成Long
解决办法
dao层的.java文件
dao层的.xml文件
serviceimpl的.java文件
这时返回值便能够接收null了,这时在对返回值结果进行判断和处理。进而解决该异常。类似的当返回值类型为int类型时我们也可以使用int的包装类Integer。
mapper映射书写的数据库表名错误
sql语法错误
多对多映射层级查询错误
resultType写成resultMap
问题
org.springframework.security.authentication.InternalAuthenticationServiceException: org.apache.ibatis.builder.IncompleteElementException: Could not find result map com.wry.dao.SetMealDao.map org.apache.ibatis.builder.IncompleteElementException: Could not find result map com.wry.dao.SetMealDao.map
原因
resultType写成resultMap
解决
pojo
变量名错误
实体类中有构造方法了,但是没有无参构造方法
问题
java.lang.RuntimeException: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: No constructor found in com.wry.pojo.Member matching [java.lang. Integer, java.lang. String, java.lang. String, java.lang. String, java.lang. String, java.lang. String, java.sql. Date, java.lang. String, java.lang. String, java.sql. Date, java.lang.String]
原因
实体类中有构造方法了,但是没有无参构造方法
解决
在使用mybatis时遇到该问题,解决方法很简单,在实体类bean中加一个无参的构造方法即可
创建对象来接受sql结果时会遍历实体类的构造方法找到与之匹配的,如果实体类中有构造方法了但是参数不匹配的话就会报上述错误,此时添加无参构造方法(默认的构造方法),会走其他方法,
Service层
空指针异常
错误原因
解决办法
/** * 检查项-删除-根据检查项id * * @param checkItemId 检查项id * @return */ @Override public void deleteByCheckItemId(Integer checkItemId) { //1.思路:判断当前检查项是否已经关联到检查组,决定是否删除 //2.检查项和检查组关联表-查询-查询条数-根据检查项id Long count = checkItemDao.findCountByCheckItemId(checkItemId); //3.判断count是否等于null或者0 if (count == null || count == 0) { //3.1当count = null或者0时,当前检查项没有关联检查组,允许删除 //4.检查项-删除-根据检查项id checkItemDao.deleteByCheckItemId(checkItemId); }else { //3.2当count > 0时,当前检查项已经关联检查组,不允许删除 //4.抛出运行异常 throw new RuntimeException("当前检查项已经关联检查组,不允许删除"); } }
没有返回对象
Controller层
controller没有接受到get请求参数
问题
客户端发送参数到服务器,controller没有接受到get请求参数
原因
参数名称不一致
解决方案
然前后端参数名称一致
根据条件搜索信息没有填写条件
问题
org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing
原因
接受请求体的注解没有设置请求体可以为null
解决
测试文件
Failed to execute goal org.codehaus.mojo:exec-maven-plugin:3.0.0:exec (default-cli) on project freemarkerdemo: Command execution failed.
问题
,使用maven方式构建spring项目。在test里面创建了一个main方法测试IOC的基本使用。但是运行时候报错:Failed to execute goal org.codehaus.mojo:exec-maven-plugin:3.0.0:exec (default-cli) on project spring_study2: Command execution failed.
原因
在maven生命周期框架中,test是用来做测试的,放入test的文件应该是test测试函数,即加了@Test的test函数,那为什么不用test函数来运行本过程呢?
解决
项目导入junit
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency>
用@Test注解
package com.wry.test; import freemarker.template.Configuration; import freemarker.template.Template; import org.junit.Test; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import java.util.HashMap; import java.util.Map; /** * @author wry * @date 2022/2/2 * @apiNote */ public class FreemarkerTest { @Test public void test1() throws Exception { // 创建Freemarker的配置对象 Configuration configuration = new Configuration(Configuration.getVersion()); // 设置模板文件所在目录 configuration.setDirectoryForTemplateLoading(new File("d:\\ftl")); // 设置字符集 configuration.setDefaultEncoding("utf-8"); // 加载模板文件 Template template = configuration.getTemplate("test.ftl"); // 准备模板文件中所需要的数据,通常是通过map进行构造 Map map = new HashMap(); map.put("name","wry"); map.put("message","freemarkder测试"); // 准备输出流对象,用于输出静态文件 Writer writer = new FileWriter("d:\\ftl\test.html"); // 输出 template.process(map,writer); // 关闭流 writer.close(); } }
Spring
SpringMVC
SpringBoot
数据源自动加载失败
问题
APPLICATION FAILED TO START *************************** 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).
原因
springboot启动类如果不配置数据源,则排除数据源自动配置
解决
SpringCloud
Eureka
应用名错误
问题
应用名应该是有两个
user-service
consumer-demo
但是实际情况是1个应用名,2个端口
原因
consumer-demo的配置文件的应用名错误
解决
Spring Cloud Gateway网关
过滤器类为加入spring容器
问题
org.springframework.context.ApplicationContextException: Failed to start bean 'eurekaAutoServiceRegistration'; nested exception is reactor.core. Exceptions$ErrorCallbackNotImplemented: java.lang.IllegalArgumentException: Unable to find GatewayFilterFactory with name MyParam
原因
过滤器类没加入spring容器
解决
过滤器类通过@Component注解加入spring容器
Spring Config Server分布式配置中心
远程存储库的URI的配置名错误
问题
sun.misc.Unsafe. park(Native Method) Invalid config server configuration. If you are using the git profile, you need to set a Git URI in your configuration. If you are using a native profile and have spring.cloud.config.server. bootstrap=true, you need to use a composite configuration.
原因
远程存储库的URI的配置名错误
解决
Feign
nested exception is java.lang.IllegalStateException: Method XX can only contain at most 1 value field.
问题
原因
Method XX can only contain at most 1 value field.
解决
The bean 'xxx. FeignClientSpecification', defined in null, could not be registered. A bean with that name has already been defined in null and overriding is disabled.
问题
The bean 'content. FeignClientSpecification', defined in null, could not be registered. A bean with that name has already been defined in null and overriding is disabled. Action: Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true
原因
这是说Feign的注册,有同名的feign的名字重复注册。
解决
在yml文件中配置如下代码即可:
main:
allow-bean-definition-overriding: true
There is already '' bean method
问题
Caused by: java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'com.wry.goods.feign.UndoLogFeign' method public abstract entity.Result com.wry.goods.feign.UndoLogFeign.add(com.wry.goods.pojo.UndoLog) to {POST /undoLog}: There is already 'undoLogController' bean method public entity.Result com.wry.order.controller.UndoLogController.add(com.wry.order.pojo.UndoLog) mapped.
原因
order-service依赖order-service-api和goods-service-api
这两个api的feign有重复,UndologFeign
解决
将其中一个UndologFeign删除
通用Mapper
Consider defining a bean of type '' in your configuration.
问题
Consider defining a bean of type 'com.wry.dao.BrandMapper' in your configuration.
原因
通用mapper的包扫描地址错误
错误地址
解决
将通用Mapper的包扫描地址修改正确
条件搜索成了查询所有
问题
根据image_items查询。条件搜索成了查询所有
原因
条件查询构建,这里andEqualTo方法的property实参需要的是实体类定义的属性名,这里错误的填写成了数据库里的字段名
解决
Redis
添加套餐后,文件名存入Redis的set集合,存入的键名错误
RabbitMQ
连接被拒绝
问题
连接被拒绝
原因
rabbitmq链接地址和端口错误
解决
更换连接rabbitmq的地址和端口
路由模式的生产者Exception in thread "main" java.io.IOException
问题
原因
声明交换机错误
解决
声明交换机为direct
RabbitMQ和SpringBoot整合
Failed to declare queue
生产这次有问题
问题
在测试rabbitmq的时候,启动生产者没有问题,启动消费者后突然发现了如下的问题
原因
从中可以得出,在rabbitmq中没有创建此队列,打开rabbitmq的管理控制台,这时显示rabbitmq没有队列,所以消费者去监听队列时显示404找不到队列的错误
那就证明了一个问题,生产者没有创建队列成功,或者说就是没有创建队列。
发现将队列绑定交换机的方法名和声明队列的方法名重复
解决
修改将队列绑定交换机的方法名
、
消费者有问题
问题
在测试rabbitmq的时候,启动生产者没有问题,启动消费者后突然发现了如下的问题
原因
消费者绑定的队列名错误
解决
修改队列名
npm
npm install出现一直停留在"fetchMetadata: sill pacote range manifest for "解决方法
问题
npm install出现一直停留在"fetchMetadata: sill pacote range manifest for "解决方法
原因
解决
更换成淘宝的源
npm config set registry https://registry.npm.taobao.org
– 配置后可通过下面方式来验证是否成功
npm config get registry 或npm info express
elasticsearch
Windows下双击elasticsearch.bat闪退
问题
Windows下双击elasticsearch.bat闪退
cmd 直接进入 elasticsearch.bat 所在目录下:
直接启动报错如下:
原因
解决
打开 elasticsearch.bat 文件,发现有这么一行:
于是找到对应的 jvm.options 文件打开:
减小最大堆限制
将这里的(位置在第20行附近)
改为:
# Xms represents the initial size of total heap space # Xmx represents the maximum size of total heap space -Xms256m -Xmx256m
索引已经存在
问题
[index_hello/VF6HGzX7RJCFFmwpgWq1EQ] ResourceAlreadyExistsException[index [index_hello/VF6HGzX7RJCFFmwpgWq1EQ] already exists ]
原因
索引已经存在
解决
换个索引
java.lang.IllegalArgumentException: mapper [categoryName] of different type, current_type [text], merged_type [keyword]
问题
非法参数异常 Caused by: java.lang.IllegalArgumentException: mapper [categoryName] of different type, current_type [text], merged_type [keyword]
原因
索引库冲突
解决
删除elasticsearch的索引库,重新启动。
git
idea上面提交项目到gitee 最后出现 Push rejected
问题
原因
解决
找到本项目的根目录
右键选择Git Bash Here
复制如下:
git pull origin master --allow-unrelated-histories
回车
出现如下,说明正常跟过来了,若果不是,可以再回去检查下哪步出错了
接下来使用vi编辑 (会使用Linux直接上手操作,不会就跟着按键盘)
Esc(就是电脑左上角) ⇒
:(英文冒号)==>
wq ==>
回车保存编辑
出现如下说明正常过来了
重新push
会发现这里比之前多了这个
push后
idea上面下拉项目, 出现 cant`t update
问题
No tracked branch configured for branch master or the branch doesn't exist. To make your branch track a remote branch call, for example, git branch --set-upstream-to=origin/master master
原因
解决
4.2.8 创建分支
快捷键
ctrl+shift+`
4.2.9 切换分支
快捷键
ctrl+shift+`
4.2.10 分支合并
配置idk
导入模块
linux
secureCRT连接虚拟机失败,连接的ip地址错误
子主题
问题
secureCRT连接虚拟机失败,连接的ip地址错误
原因
NAT模式设置的ip和....不一致
解决
打开虚拟机软件
编辑=》虚拟网络编辑器
axios(前端)
请求参数格式错误
错误原因
请求参数格式错误
解决方法
传参错误
问题
前端传参错误
原因‘
前端传递的键值对的键,要的是实体类定义的属性名,这里错误的填写成了数据库里的字段名
解决
请求类型错误
org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported
请求路径错误,或者json参数错误
访问静态资源(前端)
静态资源访问不到
症状
原因
文件名错误
解决
修改文件名
resource资源热更新
java基础
数组
索引越界异常
原因
public class ArrayDemo { public static void main(String[] args) { int[] arr = new int[3]; System.out.println(arr[3]); } }
数组长度为3,索引范围是0~2,但是我们却访问了一个3的索引。
程序运行后,将会抛出ArrayIndexOutOfBoundsException 数组越界异常。在开发中,数组的越界异常是不能出现的,一旦出现了,就必须要修改我们编写的代码。
解决
将错误的索引修改为正确的索引范围即可!
空指针异常
原因
public class ArrayDemo { public static void main(String[] args) { int[] arr = new int[3]; //把null赋值给数组 arr = null; System.out.println(arr[0]); } }
arr = null 这行代码,意味着变量arr将不会在保存数组的内存地址,也就不允许再操作数组了,因此运行的时候会抛出 NullPointerException 空指针异常。在开发中,空指针异常是不能出现的,一旦出现了,就必须要修改我们编写的代码。
解决
给数组一个真正的堆内存空间引用即可!
string
replace()
替换失败
问题
调用该方法,替换失败
原因
替换前的变量的值没有改变,只是将替换后的结果返回。想要把string的值被真正的改变就要对替换前的变量赋值为替换后的返回结果
解决
substring
由于被执行求长度方法的对象写错,造成String的index溢出边界异常
问题
java.lang.StringIndexOutOfBoundsException: String index out of range: 68
原因
由于被执行求长度方法的对象写错,造成String的index溢出边界异常
解决
Thymeleaf
Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "userStatus.index" (template: "03-each.html" - line 70, col 14)
问题
Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "userStatus.index" (template: "03-each.html" - line 70, col 14)
原因
状态变量写错
解决
经验
通过idea查询bug看蓝色代码最下面的一条错误信息