2013-07-09 95 views
-1

我編寫了一個程序,使用類型4連接的jdbc連接到數據庫。該程序編譯得很好,但給出了java.lang.ClassNotFoundException的異常:com.mysql.jdbc.Driver。我已經提取了我的java文件所在文件夾中的所有文件夾,甚至將所有jar文件和數據庫放在同一個文件夾中。該數據庫包含ID爲1和2的兩條記錄。可能是什麼問題?使用mysql的JDBC類型4連接

import java.sql.*; 

class TestJDBC { 

public static void main(String aa[]) { 

    try { 
     Class.forName("com.mysql.jdbc.Driver"); 

     Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/Student_Details", "root",""); 

     Statement stmt = con.createStatement(); 

     ResultSet rs = stmt.executeQuery("Select ID, studentname from Details where ID=1"); 

     while(rs.next()) { 
      System.out.print(rs.getString("ID")); 
      System.out.print("\t"); 
      System.out.println(rs.getString("StudentName")); 
     } 
    } 
    catch(Exception e) { 
     System.out.println(e); 
    } 
} 

}

回答

3

如果您mysql-connector-java-5.0.8-bin.jar文件位於與像\lib\的路徑在項目中像下面

enter image description here

用命令提示符(假設窗口)

然後目錄更改到該文件夾​​,那麼你就需要編譯類

javac -cp ".;lib/mysql-connector-java-5.0.8-bin.jar" YourClass.java 

使用:如果沒有窗戶(只需要引號如果文件空間/文件夾名稱)

然後用

java -cp ".;lib/mysql-connector-java-5.0.8-bin.jar" YourClass 

同時運行,確保你沒有重複的罐子使用

1

,你需要在類路徑中包含com.mysql.jdbc.Driver罐子

java -cp mysql.jar;. TestJDBC

其中的mysql.jar是包含類文件

的jar

com/mysql/jdbc/Driver.class

的Windows機器

在放置mysql-connector-java-5.0.8-bin.jarTestJDBC.class在相同的文件夾。

從文件夾執行 java -cp mysql-connector-java-5.0.8-bin.jar;. TestJDBC

是發揮預期。

UNIX通常需要

java -cp mysql-connector-java-5.0.8-bin.jar:. TestJDBC

+0

嘗試過,但您使用的IDE仍然得到同樣的異常 –

+0

? – BevynQ

+0

不使用命令行 –

0

正如BevynQ回答,設置命令行類路徑設置路徑(如我所知)對CMD的特定電流來說,如果你退出/關閉並重新打開命令提示符,再次需要設置路徑。 我猜這兩種解決方案來使用你的程序jar文件:

  • 解決方法1)複製jar文件程序文件/的Java/JRE/lib文件夾,以便它可用於運行時間環境,但不建議在JDK/JRE中添加jar文件。

  • 方案二)設置CLASSPATH變量,將您的JAR文件位置的完整路徑,那麼,這將是可用的運行時環境: 複製JAR文件位置的完整路徑,去環境變量,搜索用戶/系統類路徑變量(當前登錄用戶的用戶變量,當前窗口上所有用戶帳戶的系統變量),如果它存在,請編輯它,並開始放置路徑,否則請創建一個新的類路徑變量並將您的完整路徑路徑

Look here to set class-path-

+0

您不應該在您的JDK中放置jar文件來讓您的類路徑工作。它僅適用於JDK庫(和一些擴展庫)。 'CLASSPATH'環境變量幾乎從未被'真正'的Java程序使用過。一般而言,你應該忽略它的存在。 –

+0

@ Mark Rotteveel:謝謝你的建議。但據我所知,通過設置類路徑,我們將其通知給java運行時環境 - 在哪裏查找特定API相關的jar文件以查找該API的類和其他資源。如果我有誤導性,請告訴我。 –

+0

是的,這就是類路徑的用途,但通常環境變量'CLASSPATH'不用於定義應用程序的類路徑(例如,當用'java -cp ...'或'java -jar ...,Java Webstart等,CLASSPATH被忽略) –