我无法加载MySQL的JDBC驱动程序

时间:2011-05-28 23:17:16

标签: java mysql jdbc

我一直在尝试使用以下代码加载JDBC MySQL连接器:

import java.sql.*;

public class dbTest{
   public static void main(String[] args) throws SQLException, ClassNotFoundException
   {
    Class.forName("com.mysql.jdbc.Driver"); 
   }
}

我一直得到一个没有找到的例外:

java.lang.ClassNotFoundException
    at edu.rice.cs.plt.reflect.PathClassLoader.findClass(PathClassLoader.java:148)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at dbTest.main(dbTest.java:6)

我已将驱动程序的路径(mysql-connector-java-3.1.14-bin.jar)添加到我的类路径中,并仔细检查以确保它是正确的。我还根据我从本文中读到的内容,将jar的副本添加到Java安装的ext文件夹中:http://www.developer.com/java/data/jdbc-and-mysql-installation-and-preparation-of-mysql.html

我还搜索了遇到此问题的其他人的帖子,但到目前为止所有的回复都说过将连接器jar添加到类路径中,我已经完成了。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:9)

  

我已添加驱动程序的路径   (MySQL的连接器的Java-3.1.14-bin.jar)   到我的课程路径

该例外告诉您没有正确执行此操作。

你是如何设置CLASSPATH的?如果它是一个环境变量,您将学习IDE和应用服务器忽略它。 不要使用它。

也不要将它放在Java JDK的/ ext目录中。

正确的做法取决于你如何使用它:

  1. 如果您在Eclipse或IntelliJ等IDE中运行,则必须将JAR添加到库中。
  2. 如果您在命令shell中运行,请在编译时使用-p选项执行javac.exe,并在运行时使用java.exe。
  3. 如果您在Web应用程序中使用它,则可以将其放在WAR文件的WEB-INF / lib目录中。如果您正在使用像Tomcat 6这样的servlet / JSP引擎,请将它放在Tomcat / lib目录中。

答案 1 :(得分:9)

在IntelliJ上,这就是我解决这个问题的方法:

档案>项目结构>图书馆> +

找到jdbc连接器。对我来说,它是在C:\ Users \ MyName.InteliJIdea13 \ config \ jdbc-drivers

答案 2 :(得分:1)

java中有两个类路径。构建路径和运行路径。在将.java文件编译为.class文件时使用构建路径。在像C这样的语言中,您有一个链接器阶段,当您在一堆目标文件上运行链接器时,该阶段会填充所有缺少的符号。这就是为什么.exe(windows)或其他原生二进制文件(linux)没有运行路径。 Java略有不同,因为编译的.class定义在需要时由jvm加载。

这样做的结果是你必须为jvm提供运行时类路径。在命令行中,您使用java.exe,它默认搜索几个地方,包括$ CLASSPATH,当前目录/ lib,以及您提供给-cp选项的任何内容。

IDE与命令行不同,因为它们试图保护您免受运行java.exe的一些麻烦,并提供所有.class文件所在的位置(这对于大型项目来说是繁重的)。 / p>

大多数IDE都有某种“运行配置”选项卡,允许您指定某些库或位置,以及运行应用程序时将使用的类。下面是如何在eclipse,netbeans和intellij中设置运行路径。

http://javahowto.blogspot.com/2006/06/set-classpath-in-eclipse-and-netbeans.html

http://www.jetbrains.com/idea/webhelp/run-debug-configuration-application.html