2012-09-03 34 views
0

我试图连接到MySQL数据库,用的连接网址:Java的MySQL驱动程序和ClassNotFoundException的

jdbc:mysql://127.0.0.1:3306/test 

我已经下载了coorect MySQL驱动程序与数据库连接,并尝试了众多设置驱动程序的方法,每个都不起作用。到目前为止,我已经尝试把JAR文件在以下位置(并相应地改变PATH环境变量)

JRE/LIB/ 
JDK/LIB/ 
JRE/LIB/mysql-connector-java-5.1.21 
JDK/LIB/mysql-connector-java-5.1.21 

的JAR文件的路径一直是它的位置+ mysql-connector-java-5.1.21-bin.jar

过去4+小时我已经阅读了关于StackOverflow的多个问题和解决方案,以及关于这个问题的在线教程,但都没有解决这个问题。

我一直在使用下面的代码尝试连接

import java.sql.*; 
import java.util.Date; 

public class DatabaseHelper{ 

    private Connection   conn    = null; 
    private Statement   statement   = null; 
    private PreparedStatement preparedStatement = null; 
    private ResultSet   resultSet   = null; 
    private String    url     = null; 

    public DatabaseHelper(){ 
     try{ 
      Class.forName("com.mysql.jdbc.Driver"); 
      conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test"); 
      System.out.println("Driver Loaded!"); 
     }catch(SQLException e){ 
      e.printStackTrace(); 
     }catch(ClassNotFoundException e){ 
      e.printStackTrace(); 
     } 
    } 
} 

堆栈跟踪

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
     at 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:186) 
     at DatabaseHelper.<init>(DatabaseHelper.java:28) 
     at DatabaseTest.<init>(DatabaseTest.java:6) 
     at DatabaseTest.main(DatabaseTest.java:14) 
+0

你究竟是如何执行代码?什么环境和什么命令?这将提供对实际正在使用的类路径更深入的了解。顺便说一下,以这种方式将这些数据库资源声明为实例变量绝对是一个非常糟糕的主意。不要这样做。请注意,这与您的具体问题无关。 – BalusC

+0

将连接器jar文件放入您的类路径中。 jdk和jre lib文件夹不适合您的类路径。在名为lib的根类路径(。)下创建一个文件夹,并将其放在那里。然后'java -cp。:./ lib/mysql-connector-java-5.1.21.jar YourMainApp'应该可以工作。将其他库放在jre或jdk库文件夹中会使您很难升级Java版本。 – km1

+0

您应该了解更多关于类路径。 http://vafer.org/blog/20081203024812/ – km1

回答

1

您需要将JAR添加到类路径。当启动Java应用程序,简单地说:

java -cp mysql-connector-java-5.1.21-bin.jar TheNameOfYourMainClass 
+0

嗨resh32,我已经尝试过这种方法,它不工作! – Jnanathan

+0

检查并确保它不是类路径顺序问题:http:// stackoverflow。COM /问题/ 1585811/ClassNotFoundException的-COM-的mysql-JDBC驱动程序 – Resh32

+0

我已经看过了这个问题,并试图解决方案提供没有工作:) – Jnanathan

0

,同时在项目的工作之前,我遇到这个问题,我把jar文件在2个地点,有什么工作对我来说是如下:

我把在JAVA_HOME/JRE_FOLDER/lib /分机/

mysql jar然后另一件事是,我在项目中创建一个libs文件夹(直接在项目的文件夹中),并将其放在它的mysql jar。之后,将jar(libs文件夹内的jar)添加到项目的构建路径。

如果您使用Eclipse,将jar添加到构建路径是通过右键单击jar并从菜单中选择“Build Path”并选择“Add to Build Path”来完成的。

希望这会有所帮助,