关于JDBC工具类加载驱动时出现java.lang.NoClassDefFoundError,无法初始化......的一种解决方案。
2021/8/16 20:36:12
本文主要是介绍关于JDBC工具类加载驱动时出现java.lang.NoClassDefFoundError,无法初始化......的一种解决方案。,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
网上好像都说的是写不写 getClassLoader(),但我无论要不要这个方法都初始化不了。经过好几天折腾,发现与之无关,应该是:
具体代码如下(可以拷贝了试试,我用的是mysql 8.0.26):
db.properties:
driver= com.mysql.cj.jdbc.Driver url = jdbc:mysql://localhost:3306/myfirst?useUnicode=true&characterEncoding=UTF-8&useSSL=true&serverTimezone=UTC username = root password = *****
JdbcUtils:
package JDBC; import java.io.IOException; import java.io.InputStream; import java.sql.*; import java.util.Properties; public class JdbcUtils { private static String driver = null; private static String url = null; private static String username = null; private static String password = null; static { try { InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties"); Properties properties = new Properties(); properties.load(in); driver = properties.getProperty("driver"); url = properties.getProperty("url"); username = properties.getProperty("username"); password = properties.getProperty("password"); Class.forName(driver); } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } } //获取连接 public static Connection getConnection() throws SQLException { return DriverManager.getConnection(url,username,password); } //释放连接资源 public static void release(Connection conn, Statement st, ResultSet rs){ if(rs != null){ try { rs.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } if(st != null){ try { st.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } if(conn != null){ try { conn.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } } }
Testdemo2:
package JDBC; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Testdemo2 { public static void main(String[] args) { Connection conn = null; Statement st = null; ResultSet rs = null; try { conn = JdbcUtils.getConnection();//获取数据库连接 st = conn.createStatement();//获取SQL的连接对象 String sql = "select * from student"; rs = st.executeQuery(sql); while (rs.next()){ System.out.println(rs.getObject("id")); System.out.println(rs.getObject("name")); System.out.println(rs.getObject("age")); System.out.println(rs.getObject("email")); } } catch (SQLException throwables) { throwables.printStackTrace(); }finally { JdbcUtils.release(conn,st,rs); } } }
这篇关于关于JDBC工具类加载驱动时出现java.lang.NoClassDefFoundError,无法初始化......的一种解决方案。的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-04TiDB 资源管控的对撞测试以及最佳实践架构
- 2024-07-03万字长文聊聊Web3的组成架构
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现