赞
踩
空指针异常: 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
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
- }

如果两个变量进行比对时结果发生错误,请务必检查二者是否为同一类型。
很有可能误将内存地址当做内容进行判断
引用变量不能使用“==”进行判断
错误:数组下标越界
- for (int i :arr){
- System.out.println(arr[i]);
- }
正确:
- // for (int i :arr){
- // System.out.println(i);
- // }
代码没有错误,反序列化时判断对象是否为集合却为false
原因:导入了错误的包,(导入了之前学习笔记中的List类)
总结:以后类名避免使用List、TreeMap、Map等关键字,以免误用
Class 'Student' must either be declared abstract or implement abstract method 'compareTo(T)' in 'Comparable'
原因:没有加入泛型
synchronized的位置很重要,如果同步代码块内有循环,在循环结束之前都不会解锁。
锁循环:
锁方法:
官方的解释:抛出该异常表明某一线程已经试图等待对象的监视器,或者试图通知其他正在等待对象的监视器,然而本身没有指定的监视器的线程。
也就是当前的线程不是此对象监视器的所有者。当前线程要锁定该对象之后,才能用锁定的对象执行这些方法,这里需要用到synchronized关键字,锁定哪个对象就用哪个对象来执行notify(), notifyAll(),wait(), wait(long), wait(long, int)操作,否则就会报出IllegalMonitorStateException异常。
此处同步代码块监控的属性为ticket 车票,
而多线程车票售卖程序并未进行修改,synchronized作为修饰符时,监控指定的为this 当时的this为saleThread(车票售卖线程)对象,没有监控ticket,因此无法对ticket使用wait方法。
修改售卖程序时,调用了ticket对象.notify、wait方法,因此出现大片爆红。
修复BUG:
异常信息: Test class should have exactly one public zero-argument constructor
可以通过配置修改,详见万能青年
IDEA——万能青年操作指南_焰火青年·的博客-CSDN博客
count++ 为先执行后赋值,所以统计次数依旧是1
统计字母次数
开发提示:可以使用Map,key是字母,value是该字母的次数
效果演示:例如:String str = "Your future depends on your dreams, so go to sleep.";
发生了非法的反射访问操作
原因:使用了高版本的JDK11.
解决方案:An illegal reflective access operation has occurred_lizz666的博客-CSDN博客
项目名错误,改为th获取项目名访问
如果还是不行,直接把源码复制到项目路径
之后可能需要更新
注:之后需要在Tomcat内重新配置
1.如果500报错,前缀 后缀没有问题,就是逻辑视图问题,请检查web.xml配置文件与视图基础类 对象中的参数名是否匹配,前后缀与processTemplate()传入的参数是否正确。
2.如果出现其他未知问题,可能是Toncat、Jar包、jdk版本兼容性问题。
产生原因:没有正确引入vue.js文件
解决方案:
1.检查自己引入的文件的路径是否书写正确
2.尝试重构,服务器端文件没有载入Vue
原因:因为页面跳转时为了被异常Filter 捕获加入了protected,导致地址编号,Thmeleaf无法成功解析 。
解决:把error移出WEB-INF,使用重定向的方式跳转404页面。(WEB-INF内文件只能请求转发)
DBUtil ,解析到了对象,但属性值全部为null
原因:实体对象getset错误使用了Builder方式自动生成,导致BeanListHandler 无法解析?
(实体类时用了一下,忘记修改回来)
修改后:
web.xml还在,Maven消失了
选中pom.xml 配置文件,添加作为Maven的项目
原因:操作的时候不小心点到了ignore pom.xml
即pom.xml文件被设置在maven忽略文件清单中
解决方案:
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视图解析失败!!!!!@!@!!!
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
在父项目版本管理中加入
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
检查 命名、注解、配置文件扫描包、端口、ip、视图前后缀配置!!
在 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就好了
没有看清,u和o。以后遇到这种问题,首先排查是否导错包!名字是否错误!找不同!!
然后发现service层也错了!全错了!
Invocation of init method failed; nested exception is java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'roleController' method
com.atguigu.controller.RoleController#index(HttpServletRequest, Map) 批量修改时注意,选择注解修改
这里也是
IDEA SpringMVC web.xml报错 org.springframework.web.servlet.DispatcherServlet' is not assignable to javax.servlet.Servlet
解决方法:ProjectStructure-Dependencies-右上角绿色小加号-添加Tomcat的包即可
systemctl status NetworkManager 应该是active
systemctl disable NetworkManager 下次开机不会自动开启,现在没有关
systemctl stop NetworkManager 现在是开启状态,现在就关掉
systemctl start network.service 现在就开启network网络服务
reboot 重新启动
报错:
正确的:
判断:Jar包问题,尝试清理仓库重新下载,clean,重新安装。
解决:引入Jar包顺序导致的!把dubbo相关的五个jar包移到下边,启动成功!
原理:未知。maven依赖添加顺序会影响????dubbo包含了spring某些jar包引起冲突??
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远程连接
原因:父依赖只是版本控制,由于子模块并未导入,所以依赖不会进行下载?
证书过期了,找运维吧
The Tomcat connector configured to listen on port 8089 failed to start. The port may already be in use or the connector may be misconfigured.
打开cmd命令行
原因:request输入流只能被读取一次,再次获取会返回-1,拦截器中如何获取requestBody?
拦截器读取参数后,controller会报错:Cannot call getInputStream(), getReader() already called
解决:
1. 辅助工具类(读取流)
-
- /**
- * description:http辅助工具类
- * @Date 2023/12/22 16:02
- * @Author by:rty
- */
- public class HttpHelper {
-
- /**
- * description:从request获取body的json数据
- *
- * @param
- * @return
- */
- public static String getBodyString(ServletRequest request) {
- StringBuilder sb = new StringBuilder();
- ServletInputStream inputStream = null;
- BufferedReader reader = null;
- try {
- inputStream = request.getInputStream();
- reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
- String line = "";
- while ((line = reader.readLine()) != null) {
- sb.append(line);
- }
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- if (inputStream != null) {
- try {
- inputStream.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- if (reader != null) {
- try {
- reader.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- return sb.toString();
- }
-
-
- /**
- * description:从request获取body的json数据,并格式化成map形式
- *
- * @param
- * @return
- */
- @SuppressWarnings("all")
- public static Map<String, Object> getBodyMap(ServletRequest request) {
- Map<String, Object> params = new HashMap<>();
- String bodyString = getBodyString(request);
- if (StringUtil.isNotNullToObj(bodyString)) {
- params = JSON.parseObject(bodyString, Map.class);
- }
- return params;
- }
-
- }

2. 包装body,处理类
- /**
- * 解决: request.getInputStream()只能读取一次的问题
- * @Date 2023/12/22 15:47
- * @Author by:rty
- */
- public class BodyReaderHttpServletRequestWrapper extends HttpServletRequestWrapper {
-
- private byte[] body;
-
- public BodyReaderHttpServletRequestWrapper(HttpServletRequest request) throws IOException {
- super(request);
- // 将body数据存储起来
- body = HttpHelper.getBodyString(request).getBytes(StandardCharsets.UTF_8);
- }
-
- @Override
- public BufferedReader getReader() throws IOException {
- return new BufferedReader(new InputStreamReader(getInputStream()));
- }
-
- @Override
- public ServletInputStream getInputStream() throws IOException {
-
- final ByteArrayInputStream bais = new ByteArrayInputStream(body);
-
- return new ServletInputStream() {
-
- @Override
- public int read() throws IOException {
- return bais.read();
- }
-
- @Override
- public boolean isFinished() {
- return false;
- }
-
- @Override
- public boolean isReady() {
- return false;
- }
-
- @Override
- public void setReadListener(ReadListener readListener) {
-
- }
-
- };
- }
-
- public void setInputStream(byte[] body) {
- this.body = body;
- }
- }

3. 过滤器
- /**
- * 解决: request.getInputStream()只能读取一次的问题
- * @Date 2023/12/22 15:31
- * @Author by:rty
- */
- @Order(3)
- @Component
- public class RequestWrapperFilter implements Filter {
-
- private Logger log = LoggerFactory.getLogger(RequestWrapperFilter.class);
-
- @Override
- public void init(FilterConfig filterConfig) throws ServletException {
-
- }
-
- @Override
- public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException
- , IOException {
- ServletRequest requestWrapper = null;
- if (request instanceof HttpServletRequest) {
- requestWrapper = new BodyReaderHttpServletRequestWrapper((HttpServletRequest) request);
- }
- if (null == requestWrapper) {
- log.error("过滤器包装request失败 返回原来的request");
- chain.doFilter(request, response);
- } else {
- log.info("过滤器包装request成功");
- chain.doFilter(requestWrapper, response);
- }
- }
-
- @Override
- public void destroy() {
-
- }
-
- }

- 启动类中加入过滤器
- @SpringBootApplication(scanBasePackages = "cn.qtone")
- @MapperScan("cn.qtone.dao")
- public class VideoPhoneApplication implements WebMvcConfigurer
- {
-
- @Autowired
- private CutOverInterceptor cutOverInterceptor;
-
- public static void main(String args[])
- {
- SpringApplication.run(VideoPhoneApplication.class, args);
- }
-
- @Override
- public void addInterceptors(InterceptorRegistry registry) {
- registry.addInterceptor(cutOverInterceptor).addPathPatterns("/**");
- }
-
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。