ClassNotFoundException:com.mysql.jdbc.Driver

时间:2012-01-05 16:20:50

标签: java jdbc classnotfoundexception

这个问题在这里被提出了很多,但我仍然无法解决我的问题: 我将mysql-connector-java-5.1.18-bin放入C:\Program Files\Java\jre6\lib\ext文件夹。 我有这段代码:

    // Load the database driver
    Class.forName("com.mysql.jdbc.Driver");
    // Get a connection to the database
    Connection conn = DriverManager.getConnection(
                        "jdbc:mysql://localhost:3306/mysql", "root", "4958ps");
    // Get a statement from the connection
    Statement stmt = conn.createStatement() ;
    // Execute the query
    ResultSet rs = stmt.executeQuery( "SELECT * FROM Cust" ) ;
    // Loop through the result set
    while( rs.next() )
        System.out.println( rs.getString(1) ) ;
    // Close the result set, statement and the connection
    rs.close() ;
    stmt.close() ;
    conn.close() ;
} catch( SQLException se ) {
    System.out.println( "SQL Exception:" ) ;
    // Loop through the SQL Exceptions
    while( se != null ) {
        System.out.println( "State  : " + se.getSQLState()  ) ;
        System.out.println( "Message: " + se.getMessage()   ) ;
        System.out.println( "Error  : " + se.getErrorCode() ) ;
        se = se.getNextException() ;
    }          
} catch( Exception e ) {
    e.printStackTrace();
} 

我得到一个带有以下堆栈跟踪的ClassNotFoundException:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at pack.Test.main(Test.java:14)

我还将CLASSPATH变量更改为C:\Program Files\Java\jre6\lib\ext\mysql-connector-java-5.1.18-bin 有什么想法吗?

6 个答案:

答案 0 :(得分:3)

您下载的zip应包含名为mysql-connector-java-5.0.8-bin.jar或类似的文件。版本可能不同。检查它是否存在并检查它是否直接位于类路径中(不在子目录等中)。

如果没问题,请检查您的类路径变量是否被其他内容覆盖。如果您手动执行程序,请执行以下操作:java -cp "C:\Program Files\Java\jre6\lib\ext\mysql-connector-java-5.0.8-bin.jar:." YourClass

如果您使用的是eclipse之类的IDE,请检查您的构建路径设置。 (在eclipse中,您可以右键单击您的项目 - >属性 - > Java构建路径 - >添加外部JAR,然后提供连接器的路径... jar。

答案 1 :(得分:2)

我认为问题是你要把mysql-connector-java-5.1.18-bin文件放在那里你必须把“mysql-connector-java-5.0.5.jar”文件放在那里。

我在eclipse(IDE)中创建了一个Web应用程序。因此,如果您在eclipse(IDE)上创建Web应用程序,则可以将“mysql-connector-java-5.0.5.jar”放在lib文件夹中。 下面是我把“mysql-connector-java-5.0.5.jar”文件...

的路径

C:\用户\阿布舍克巴克\工作空间\ MyProject的\的WebContent \ WEB-INF \ lib中\ MySQL的连接器的Java-5.0.5.jar

答案 2 :(得分:1)

CLASSPATH变量不能只是目录,它必须具有实际的jar名称。

答案 3 :(得分:0)

bat文件看起来像

@echo off
set CLASSPATH=program.jar;mysql-connector-java-5.1.18-bin.jar

:start

start javaw.exe MainClass

program.jar(将包含MainClass类作为主类),mysql.jar必须驻留在同一目录中。

对于Eclipse,您必须将项目Build Path设置为包含mysql ... jar。

答案 4 :(得分:0)

我遇到了同样的问题以及我采取了哪些措施来解决它:

  1. 相应地将.jar下载到使用的服务器: 对于mySQL,我下载了mysql-connector-java-5.1.18-bin.jar

  2. 在SYSTEM VARIABLES中添加了CLASSPATH,其中使用了.jar的全名。如果你已经有了CLASSPATH var,那么就加入它,就像在PATH&#34 ;; Jar / jar文件名的路径"就像是: CLASSPATH = d:\ requisites \ mySQL_connector \ mysql-connector-java-5.1.18-bin.jar

  3. 在Eclipse项目中: 右键单击project-> Build Path-.Configure构建路径。添加外部JAR并添加jar文件。当您成功完成此步骤时,它将显示在"参考库"

  4. 中的项目中
  5. 一个重要的步骤(如果您使用我正在使用的Android开发工具框架)是在您的应用程序的libs文件夹中添加该JAR文件。我通过将jar从我的路径(d:\ requisites \ mySQL_connector)复制粘贴到我项目的libs文件夹来完成此操作。

  6. 重新启动项目,它在第二次运行时工作。

答案 5 :(得分:0)

试试这个

如果您创建动态Java项目(在Eclipse中)

  1. 检查相应项目的构建路径

    • 步骤1.右键单击您的项目并选择属性

    • 步骤2.在右侧,您将获得部署程序集

    • 步骤3.单击“添加”,然后从“文件系统”

    • 中选择“存档”
    • 步骤4.再次单击添加并选择相应的数据库jar文件。