常见异常
空指针异常: NullPointerExeption
类型转换异常:ClassCastException
数组下标越界异常:ArrayIndexOutOfBoundsException
数字格式化异常:NuberFormatException
文件找不到异常:FileNotFoundException (编译时)
不支持序列化:NotSerializableException
序列化版本号不一致:InvalidClassException (无效的类异常)
IllegalMonitorStateException:异常发生是由于程序员没有注意notify(),notify(),wait()方法的使用条件,没有真正理解线程同步机制。如果当前的线程不是此对象锁的所有者,却调用该对象的notify(),notify(),wait()方法时抛出该异常。
Wrong number of parameters: expected 6, was given 5
SQL:错误的参数数量:需要6个只传了5个
java.lang.RuntimeException: Unknown column 'id1' in 'field list' Query
表中没有此字段:id1
导入scanner时:
2021.12.29
import jdk.nashorn.internal.parser.Scanner; //错误?
import java.util.Scanner; //正确
辨别用户输入的是否为int,否则重新输入
public static void main(String[] args) {
public static void main(String[] args) {
Scanner scanner; //声明类型,不赋值
int i;
System.out.println("请输入数字:");
while(true){
scanner = new Scanner(System.in); //关键,写在循环内
if(scanner.hasNextInt()){
i = scanner.nextInt();
return; //结束循环
}
System.out.println("输入错误,请重新输入!");
}
}方法递归调用时:
1.5
错误:该程序始终返回false
//递归查找每一个节点,返回,int 下标
public boolean queryNode(Node node,Object data){
if(node.equals(data)){
return true;
}
if(node.next!=null){
queryNode(node.next,data); // ←——没有return,结果并未成功返回
}
return false;
}修改后:
//递归查找每一个节点,返回,int 下标
public boolean queryNode(Node node,Object data){
if(node.equals(data)){
return true;
}
if(node.next!=null){
return queryNode(node.next,data); // ←——添加了return
}
return false;
}原因,举例说明:
public static void main(String[] args) {
//使用递归写一个方法,查找数组中是否存在某个元素
int[] a = {1,2,3,4,5,6};
System.out.println(query(a,6));
}
static int index = 0;
public static boolean query(int[] r,int i){
if(index < r.length){
if(r[index] == i){ //如果找到该元素,返回true
return true;
}
if(r[index] != i){ //没有找到该元素,递归继续查找
index++;
query(r, i); //关键,递归后的结果并没有继续返回,程序将会继续进行
}
}
return false; //以至于程序永远返回false
}equlse、"=="
如果两个变量进行比对时结果发生错误,请务必检查二者是否为同一类型。
很有可能误将内存地址当做内容进行判断
引用变量不能使用“==”进行判断
使用增强for循环(forach)时:
错误:数组下标越界
for (int i :arr){
System.out.println(arr[i]);
}正确:
// for (int i :arr){
// System.out.println(i);
// }xxx instanceof List 判断错误时:
代码没有错误,反序列化时判断对象是否为集合却为false


原因:导入了错误的包,(导入了之前学习笔记中的List类)

总结:以后类名避免使用List、TreeMap、Map等关键字,以免误用
Comparable 实现接口、重写方法后报错

Class 'Student' must either be declared abstract or implement abstract method 'compareTo(T)' in 'Comparable'
原因:没有加入泛型

synchronized
synchronized的位置很重要,如果同步代码块内有循环,在循环结束之前都不会解锁。
锁循环:

锁方法:


将火车售卖程序套用消费者、生产者模式时: IllegalMonitorStateException
官方的解释:抛出该异常表明某一线程已经试图等待对象的监视器,或者试图通知其他正在等待对象的监视器,然而本身没有指定的监视器的线程。
也就是当前的线程不是此对象监视器的所有者。当前线程要锁定该对象之后,才能用锁定的对象执行这些方法,这里需要用到synchronized关键字,锁定哪个对象就用哪个对象来执行notify(), notifyAll(),wait(), wait(long), wait(long, int)操作,否则就会报出IllegalMonitorStateException异常。
此处同步代码块监控的属性为ticket 车票,

而多线程车票售卖程序并未进行修改,synchronized作为修饰符时,监控指定的为this 当时的this为saleThread(车票售卖线程)对象,没有监控ticket,因此无法对ticket使用wait方法。

修改售卖程序时,调用了ticket对象.notify、wait方法,因此出现大片爆红。

修复BUG:

@Test测试单元不能存在有参构造


异常信息: Test class should have exactly one public zero-argument constructor
可以通过配置修改,详见万能青年
IDEA——万能青年操作指南_焰火青年·的博客-CSDN博客
i++ 与 ++i
count++ 为先执行后赋值,所以统计次数依旧是1
统计字母次数
开发提示:可以使用Map,key是字母,value是该字母的次数
效果演示:例如:String str = "Your future depends on your dreams, so go to sleep.";

Mysql & JDBC
XML解析时报红:

发生了非法的反射访问操作
原因:使用了高版本的JDK11.
解决方案:An illegal reflective access operation has occurred_lizz666的博客-CSDN博客
JDBC 增删改查中 占位符不需要'?' 包裹


JavaWeb
CSS样式无法渲染问题:


项目名错误,改为th获取项目名访问
项目文件增加时候缓存问题:

如果还是不行,直接把源码复制到项目路径
web文件夹在,web项目图标没了,重命名导致异常,手动添加Web

之后可能需要更新
项目在,war包不见了 — 手动导入

注:之后需要在Tomcat内重新配置
Thymeleaf —— 500报错,地址出问题
1.如果500报错,前缀 后缀没有问题,就是逻辑视图问题,请检查web.xml配置文件与视图基础类 对象中的参数名是否匹配,前后缀与processTemplate()传入的参数是否正确。
2.如果出现其他未知问题,可能是Toncat、Jar包、jdk版本兼容性问题。
Vue引入错误 :Uncaught ReferenceError: Vue is not defined
产生原因:没有正确引入vue.js文件
解决方案:
1.检查自己引入的文件的路径是否书写正确


2.尝试重构,服务器端文件没有载入Vue

书城六:由于Fliter 配置路径导致无法重定向到自己的404页面

原因:因为页面跳转时为了被异常Filter 捕获加入了protected,导致地址编号,Thmeleaf无法成功解析 。




解决:把error移出WEB-INF,使用重定向的方式跳转404页面。(WEB-INF内文件只能请求转发)



DBUtil ,解析到了对象,但属性值全部为null

原因:实体对象getset错误使用了Builder方式自动生成,导致BeanListHandler 无法解析?
(实体类时用了一下,忘记修改回来)



修改后:



Maven
web.xml还在,Maven消失了

选中pom.xml 配置文件,添加作为Maven的项目

Maven pom.xml图标变成了灰色 或 添加了依赖但不起作用

原因:操作的时候不小心点到了ignore pom.xml 即pom.xml文件被设置在maven忽略文件清单中
解决方案:

电影表单:首页访问500,web.xml配置总控制器没问题,springmvc.xml视图控制器没问题,jar包没问题
An error happened during template parsing (template: "ServletContext resource [/WEB-INF/templates/portal.html]")
Could not open ServletContext resource [/WEB-INF/templates/portal.html]


最后发现templates,文件夹少了个l

导致Thymeleaf视图解析失败!!!!!@!@!!!

idea启动时,显示8080端口被占用

1、win+R打开window窗口,执行命令:netstat -ano
1、window+R,输入cmd,回车启动
2、输入netstat -ano | findstr 8080 (如果是其他端口就改一下)
3、输入taskkill /pid 19112 /f (这个19112是对应上一条语句搜索出来的PID)
2、执行命令:tasklist
根据PID确定是哪一个进程
3、通过任务管理器,终止进程
4、重启tomcat

Maven 设置编码问题

在父项目版本管理中加入
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

网页404
检查 命名、注解、配置文件扫描包、端口、ip、视图前后缀配置!!
Git push报错: error: failed to push some refs to ‘https://gitee.com/
在 git 执行命令git push origin master时,报错error: failed to push some refs to ‘https://gitee.com/
根本原因是远程仓库和本地仓库内容不同,将远程仓库中不同的内容pull到本地,就好了。
比如,我是新建了一个远程仓库,准备把本地内容上传时,忘记把远程仓库的redme.md文件同步出错的。
解决方法:
git pull --rebase origin master
将redme.md文件同步到本地,然后再次执行git push origin master就好了
类型不匹配问题 Required type:Role Provided:Rule!!
没有看清,u和o。以后遇到这种问题,首先排查是否导错包!名字是否错误!找不同!!


然后发现service层也错了!全错了!


503:映射重复



Invocation of init method failed; nested exception is java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'roleController' method
com.atguigu.controller.RoleController#index(HttpServletRequest, Map)
批量修改时注意,选择注解修改
这里也是 
org.springframework.web.servlet.DispatcherServlet' is not assignable to 'javax.servlet.Servlet,jakarta.servlet.Servlet'
IDEA SpringMVC web.xml报错 org.springframework.web.servlet.DispatcherServlet' is not assignable to javax.servlet.Servlet

解决方法:ProjectStructure-Dependencies-右上角绿色小加号-添加Tomcat的包即可
Dubbo,远程服务类,空指针

systemctl status NetworkManager 应该是active
systemctl disable NetworkManager 下次开机不会自动开启,现在没有关
systemctl stop NetworkManager 现在是开启状态,现在就关掉
systemctl start network.service 现在就开启network网络服务
reboot 重新启动
jetty 启动失败 [WARNING] Failed startup of context o.e.j.m.p.JettyWebAppContext@7f572c37{/, (学习Dubbo时)
报错:

正确的:
判断:Jar包问题,尝试清理仓库重新下载,clean,重新安装。
解决:引入Jar包顺序导致的!把dubbo相关的五个jar包移到下边,启动成功!
原理:未知。maven依赖添加顺序会影响????dubbo包含了spring某些jar包引起冲突??

Linux ip错了??

Mysql 远程访问失败
Nacos 集群部署时,持久化到Windows的本地Mysql,无法建立连接!
问题:ip、端口、用户名、密码全都正确,Mysql依旧无法远程访问!
org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.

原因:root用户没有远程访问权限

解决:
1. 查看是否能远程调用:
mysql -u root -p -h 192.168.68.1 
2. 不能访问,进行设置
mysql -u root -p登录数据库,use mysql 使用数据库
下面语句运行与mysql5.7及以前版本
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;mysql 8版本执行下面语句
#Mysql8 创建用户
CREATE USER 'root'@'%' IDENTIFIED BY '你的密码';
#进行授权
grant all privileges on *.* to 'root'@'%' ;
#刷新用户权限
FLUSH PRIVILEGES;3. 执行查询,查看数据库当前有访问权限的信息 (或图形化界面查看)
SELECT User,Host FROM user;
4. 再次尝试远程调用,成功
mysql -u root -p -h 192.168.68.1 
参考:MySQL允许root远程登录_小gu的博客-CSDN博客_mysql允许root远程连接
properties 配置文件中文注解??乱码

Maven 父依赖 爆红,依赖始终下载不下来
原因:父依赖只是版本控制,由于子模块并未导入,所以依赖不会进行下载?

Autowired、OpenFeign爆红

