2011-05-28 33 views
5

que he estado tratando de cargar el conector JDBC de MySQL con el siguiente código:No puedo cargar el controlador JDBC para MySQL

import java.sql.*; 

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

Y me siguen dando una clase que no se encuentra una excepción:

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) 

He agregado la ruta al controlador (mysql-connector-java-3.1.14-bin.jar) a mi classpath y comprobé dos veces para asegurarme de que era correcta. También agregué copias del archivo jar a la carpeta ext de mi instalación Java en base a lo que leí de este artículo: http://www.developer.com/java/data/jdbc-and-mysql-installation-and-preparation-of-mysql.html

También busqué publicaciones de otros que tuvieron este problema, pero todas las respuestas hasta ahora estado diciendo agregar el conector de jar a la classpath, que ya he hecho.

Cualquier ayuda sería muy apreciada.

Respuesta

9

he añadido la ruta al controlador (conector mysql-java-3.1.14-bin.jar) a mi ruta de clase

La excepción le dice que usted no lo hizo es correcto

¿Cómo se establece CLASSPATH? Si se trata de una variable de entorno, aprenderá que los IDEs y los servidores de aplicaciones la ignoran. No lo use.

No lo coloque tampoco en el directorio/ext de su Java JDK.

La forma correcta de hacerlo depende de cómo se está usando:

  1. Si está ejecutando dentro de un IDE como Eclipse o IntelliJ, hay que añadir el JAR a una biblioteca.
  2. SI se está ejecutando en un shell de comandos, use la opción -p para javac.exe cuando compile y java.exe cuando ejecute.
  3. Si lo está usando en una aplicación web, puede comenzar poniéndolo en el directorio WEB-INF/lib de su archivo WAR. Si está utilizando un motor servlet/JSP como Tomcat 6, colóquelo en el directorio Tomcat/lib.
+0

Gracias por la respuesta, configuré la variable CLASSPATH de entorno. Estoy usando Netbeans y lo agregué a la biblioteca como dijiste. Muchas gracias. – kevinAlbs

1

Hay dos classpaths en java. Compilar ruta y ejecutar ruta. La ruta de compilación se usa al compilar archivos .java en archivos .class. En un lenguaje como C, tiene una etapa de vinculador que llena todos los símbolos que faltan cuando ejecuta el vinculador en un grupo de archivos de objetos. Es por eso que para .exe (windows) u otros binarios nativos (linux) no hay una ruta de ejecución. Java es ligeramente diferente porque las definiciones compiladas de .class son cargadas por el jvm a medida que son necesarias.

Lo que sale de esto es que tiene que proporcionar un classpath de tiempo de ejecución para el jvm. En la línea de comandos, utiliza java.exe que busca algunos lugares de forma predeterminada, incluido $ CLASSPATH, el directorio/lib actual y lo que suministre a la opción -cp.

IDE son diferentes de la línea de comandos porque intentan protegerlo de algunos de los inconvenientes de ejecutar java.exe y proporcionar las ubicaciones donde están todos los archivos .class (lo que sería oneroso en un proyecto grande).

La mayoría de los IDE tienen algún tipo de pestaña "Ejecutar configuración" que le permite especificar ciertas bibliotecas o ubicaciones con clases que se usarán cuando ejecute su aplicación. A continuación se muestra cómo establecer la ruta de ejecución en eclipse, netbeans e 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

9

En IntelliJ así es como he resuelto este problema:

Archivo> Estructura del proyecto> Bibliotecas> +

Localice el conector JDBC. Para mí fue en C: \ Users \ MiNombre.InteliJIdea13 \ config \ jdbc-drivers

Cuestiones relacionadas