近期报错合集

1.java.lang.NoClassDefFoundError: Could not initialize class

代码:

 	private static String url;
    private static  String user;
    private static  String password;
    private static String driver;
 static {
        try {
        //1.创建集合类对象
        Properties pro = new Properties();
        //1.2利用CLassLoader对象获取配置文件路径
            Class c = JDBCUtils.class;
            ClassLoader cl =  c.getClassLoader();
            URL res =  cl.getResource("jdbc.properties");
            String path = res.getPath();
            System.out.println(path);

            //2.加载文件进内存
            pro.load(new FileReader(path));
            //3.获取属性并赋值
            url = pro.getProperty("url");
            user = pro.getProperty("user");
            password = pro.getProperty("password");
            //4.注册驱动
            driver = pro.getProperty("driver");
            Class.forName(driver);

        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

想封装一个注册驱动的静态代码块,报错原因:
在第四部注册驱动时将 Class.forName(driver);写在了 driver = pro.getProperty(“driver”);的上面,但因为driver是全局变量,所以此处没有报错,但是此时的值是null,并没有获取到配置文件里的driver。还是需要细心啊。静态代码块不能向外抛异常

2.C3P0连接池报错:连接超时

报错原因:jdbc:mysql://localhost:3306/数据库名称?serverTimezone=Asia/Shanghai
在数据库名称后面少了一点配置信息
参考:link.

3.严重: testWhileIdle is true, validationQuery not set报错

问题:使用Druid数据库连接池时报错,还是properties配置文件
参考:link

4.关于表单提交中action所指向Servlet路径404NOT Found

代码:

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/demo3")
public class Demo3 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        super.doGet(req, resp);
        System.out.println("doget");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        super.doPost(req, resp);
        System.out.println("dopost");
    }
}

html代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="demo3" method="post">
    <input name ="username">
    <input type="submit" value="提交">
</form>
</body>
</html>

教学视频中html里面,action的值是"/demo3",此时提交表单后,浏览器打开的默认路径为:http://localhost:8080/demo3
但我正确的路径应该为:http://localhost:8080//Tomcat_Servlet_2_war_exploded/demo3
然后不加“/”之后就对了,目前的理解是:不加斜杠就代表了直接从当前路径加载。这个报错也找了很久,网上大多是用的web.xml配置

5.Druid+Spring JDBC连接数据库时报错

java.lang.NullPointerException: inStream parameter is null
Caused by: java.lang.IllegalArgumentException: Property ‘dataSource’ is required
找了很久的错,最后发现报错原因竟然是配置文件(druid2.properties)的路径放错了
参考大佬:link.
报错目录:
在这里插入图片描述

改正后:在这里插入图片描述

6.在servlet里面new 对象时报错

1.报错场景:
使用servlet+springjdbc+html练习一个用户登录界面。(具体在另一篇博客记录)
2.报错页面信息

HTTP Status 500 – Internal Server Error

Type Exception Report

Message Servlet execution threw an exception

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

javax.servlet.ServletException: Servlet execution threw an exception

org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

Root Cause

java.lang.NoClassDefFoundError: org/springframework/dao/DataAccessException

com.cixa.web.servlet.LoginServlet.doPost(LoginServlet.java:27)

javax.servlet.http.HttpServlet.service(HttpServlet.java:661)

javax.servlet.http.HttpServlet.service(HttpServlet.java:742)

org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

Root Cause

java.lang.ClassNotFoundException: org.springframework.dao.DataAccessException

org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1308)

org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1136)

com.cixa.web.servlet.LoginServlet.doPost(LoginServlet.java:27)

javax.servlet.http.HttpServlet.service(HttpServlet.java:661)

javax.servlet.http.HttpServlet.service(HttpServlet.java:742)

org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

Note The full stack trace of the root cause is available in the server logs.

Apache Tomcat/8.5.70

3.找错过程
这个错找了很久很久很久,刚开始参考的文章是《WebServlet 中不能注入Bean对象》,说的是复写init方法,然后我发现里面涉及的jar文件都没有,也没学过那个变量,放弃。
然后又以为是类加载不进去,又去设置里设置Build Automatically.
还是不行,最后参考: link.
搬运一下做个记录:
解决:清除idea缓存
File–>Invalidate Cashes
检查jar包所在的lib是不是在web-inf下,多一个s或者-变成_都不行
这样然后就解决了。。。。
4.其他参考文章:
java.lang.ClassNotFoundException和java.lang.NoClassDefFoundError区别
link.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值