运行时错误:java.lang.ClassNotFoundException:com.mysql.jdbc.Driver

我是mysql和jdbc的新手,我收到了这个标题中的错误。 我一整天都在搜索,找不到适合我的解决方案。

我试过的:卸载/重新安装mysql,将mysql-connector-java-5.1.25-bin.jar和ojdbc7.jar粘贴到我试图运行的.class文件的相同位置,在不同的目录中重建程序,可能还有其他几件事。

我使用notepad ++进行编码,并使用windows命令提示符进行编译和运行。 它编译得很好,但我尝试运行

C:\ Projects \ bin> java -cp。 ClientBase

输出是:

java.lang.ClassnNotFoundException:com.mysql.jdbc.Driver

在java.net.URLClassloader $ 1.run(URLClassLoader.java:336)
在java.net.URLClassLoader $ 1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
在java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:432)
在sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:188)
在ClientBase.main(ClientBase.java:21)
再见。

// import packages import java.sql.*; // create class ClientBase public class ClientBase{ // JDBC driver name and database URL static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final String DB_URL = "jdbc:mysql://localhost/CLIENTBASE"; // Database credentials static final String USER = "root"; static final String PASS = ""; // Begin method main public static void main(String[] args) { Connection conn = null; Statement stmt = null; try{ // register JDBC driver Class.forName("com.mysql.jdbc.Driver"); // Open connection System.out.println("Connecting to database..."); conn = DriverManager.getConnection(DB_URL, USER, PASS); // Execute a query System.out.println("Creating statement..."); stmt = conn.createStatement(); String sql; sql = "SELECT id, name, address, address 2, city, phone, state, zip, fax FROM CLIENTBASE"; ResultSet rs = stmt.executeQuery(sql); // Extract data from result set while(rs.next()){ // Retrieve by column name int id = rs.getInt("id"); String name = rs.getString("name"); String address = rs.getString("address"); String address2 = rs.getString("address2"); String city = rs.getString("city"); String phone = rs.getString("phone"); String state = rs.getString("state"); String zip = rs.getString("zip"); String fax = rs.getString("fax"); // Display values System.out.print("ID: " + id); System.out.print(" Name: " + name); System.out.println("Address:" + address); System.out.println(address2); System.out.print("City:" + city); System.out.print(" State: " + state); System.out.println(" Zip: " + zip); System.out.print("Phone: " + phone); System.out.println(" Fax: " + fax); } // end while // clean up rs.close(); stmt.close(); conn.close(); }catch(SQLException se){ // Handle errors for JDBC se.printStackTrace(); }catch(Exception e){ // Handle errors for Class.forName e.printStackTrace(); }finally{ // finally block used to close resources try{ if(stmt!=null) stmt.close(); }catch(SQLException se){ se.printStackTrace(); } // end finally } // end try System.out.println("Goodbye."); } // End method main } // end class ClientBase 

我还应该说,我将关闭此代码的在线教程。 它并不是他们如何拥有它,因为我决定制作一些与他们不同的东西,但它通常是相同的。 我不认为这是一个代码问题,但错误是什么。

任何帮助,将不胜感激! 我要疯了!

您需要将一个连接器库添加到Runtime类路径:

 java -cp .;mysql-connector-java-5.1.25-bin.jar ClientBase 

我的示例使用Windows类路径分隔符";" ,在其他系统上它可能是不同的( ":"在Linux / Mac上)。 它还假设, mysql-connector-java-5.1.25-bin.jar位于同一文件夹中。 如果不是这种情况,则将路径放入库而不是普通名称。

ClientBase代表Java类文件名

 c:\>javac Test.java c:\>java -cp .;F:\CK\JavaTest\JDBCTutorial\mysql-connector-java-5.1.18-bin Test 

如果您使用netbeans,请执行以下操作1.打开Netbeans IDE 2.右键单击您的项目。 3.选择属性。 4.在左侧单击“库”。 5.在“编译”选项卡下 – 单击“添加Jar /文件夹”按钮。 6.选择下载的“mysql-connector-java-5.1.25-bin.jar”文件(从dev.mysql.com下载Connector / J)7。单击OK再次运行…其工作。

mysql.connector-java-xxx-bin.jar到libraries文件夹中。 无需import任何东西。 祝你有个好的一天。

I was also get same problem :-
我是如何为Linux系统解决的。

1.)从给定链接或其他链接下载文件mysql-connector-java-5.1.18-bin.jar 。

2.)然后将其粘贴到您的类或文件的相同文件夹或目录(在您想要连接的位置)

3.)现在使用linux命令提示符下面的命令。

java -cp .:mysql-connector-java-5.1.18-bin.jar YourFileName ..

多数民众赞成你需要做的…… 🙂

你import了什么? 从文档: http : //dev.mysql.com/doc/connector-j/en/connector-j-usagenotes-connect-drivermanager.html

 import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; // Notice, do not import com.mysql.jdbc.* // or you will have problems! 

评论:

你为什么用notepad ++? 安装IDE(Eclipse / Netbeans / IntelliJ) – 找到这些问题会更加容易(例如,未包含的jar)

如果您正在使用Swing ,则必须添加my-sql-connect的外部Jar

否则,如果您正在使用jsp servlet您必须添加外部jar并将该Jar复制到WEB_INF / lib项目文件夹中