我是mysql和jdbc的新手,但出现此标题错误。我整天都在搜索,找不到适合我的解决方案。
我尝试过的操作:卸载/重新安装mysql,将mysql-connector- java-5.1.25-bin.jar和ojdbc7.jar复制粘贴到与我要运行的.class文件相同的位置,然后将该程序重建在其他目录中,可能还有其他几件事。
我正在使用notepad ++进行编码,并使用Windows命令提示符进行编译和运行。它编译正常,但我尝试与
C:\ Projects \ bin> java -cp。客户端库
输出为:
java.lang.ClassnNotFoundException:com.mysql.jdbc.Driver 在java.net.URLClassLoader $ 1.run(URLClassLoader.java:336) 在java.net.URLClassLoader $ 1.run(URLClassLoader.java:355) 在java.security.AccessController.doPrivileged(本机方法) 在java.net.URLClassLoader .findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:432) at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass( 再见 ClientBase.main(ClientBase.java:21) 处java.lang.Class.forName0(本机方法) 处的ClassLoader.java:356)(本机方法 ) 再见。
java.lang.ClassnNotFoundException:com.mysql.jdbc.Driver
在java.net.URLClassLoader $ 1.run(URLClassLoader.java:336) 在java.net.URLClassLoader $ 1.run(URLClassLoader.java:355) 在java.security.AccessController.doPrivileged(本机方法) 在java.net.URLClassLoader .findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:432) at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass( 再见 ClientBase.main(ClientBase.java:21) 处java.lang.Class.forName0(本机方法) 处的ClassLoader.java:356)(本机方法 ) 再见。
// 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
我还应该说我正在为该代码准备在线教程。我决定做一些与他们有所不同的事情时,这并不完全是他们拥有的东西,但通常是相同的。我不认为这是一个代码问题,尽管从错误是什么。
任何帮助,将不胜感激!我要疯了!
您需要将连接器库添加到运行时类路径:
java -cp .;mysql-connector-java-5.1.25-bin.jar ClientBase
我的示例使用Windows类路径分隔符";",在其他系统上可能有所不同(":"在Linux / Mac上)。它还假定mysql- connector-java-5.1.25-bin.jar该文件位于同一文件夹中。如果不是这种情况,请在库中放置一个路径,而不要使用纯名称。
";"
":"
mysql- connector-java-5.1.25-bin.jar
ClientBase 这里代表Java类文件名
ClientBase
c:\>javac Test.java c:\>java -cp .;F:\CK\JavaTest\JDBCTutorial\mysql-connector-java-5.1.18-bin Test