Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Error de conexion solo en la consola

Hola a todos. Estoy empezando con la programación Java y me encuentro con el siguiente problema. He creado la siguiente clase que conecta con mi base de datos MYSQL y lista varios registros:
import java.sql.*;
import javax.swing.JOptionPane;
public class ImprimirTabla {
public static void main(String[] args) {

try {
Connection con = null;
Class.forName("com.mysql.jdbc.Driver"); // Busca el driver
con = DriverManager.getConnection("jdbc:mysql://localhost/db_gonfiesa", "root", "clave");// Cargar el driver
JOptionPane.showMessageDialog(null, "Conexión establecida");
Statement st = con.createStatement();
ResultSet res = st.executeQuery("Select * from tbl_client where fld_codcli > 9500000");
// Recorremos el resultado, mientras haya registros para leer, y escribimos el resultado en pantalla.
int contador = 0;
while (res.next()) {
System.out.println (res.getInt (1) + " " + res.getString (2)+ " " + res.getString(3));
contador++;
}
System.out.println("Hay "+contador+" registros");
} catch (ClassNotFoundException | SQLException e) {
JOptionPane.showMessageDialog(null, "Error de conexión "+e);
}
}
}
---------------------
Pues bien, esta clase funciona perfectamente al ejecutarla en Netbeans. Pero cuando ejecuto en la consola de comandos "java ImprimirTabla" en el mismo directorio de ImprimirTabla.class
me da "error de conexión java.lang.ClassNotFoundException: com.mysql.jdbc.Driver".
Las demás clases que ejecuto desde la consola de comandos funcionan OK.
¿Qué puede pasar?

agosto 27, 2014 | Unregistered CommenterJorgito_p

El driver JDBC para MySQL debe estar incluido en el classpath de la aplicación.
Si generas el proyecto con NetBeans, el driver debe estar incluido en la carpeta dist, para que el jar del proyecto lo pueda localizar.
Debe añadirse como librería externa.

Esta línea:
Class.forName("com.mysql.jdbc.Driver"); // Busca el driver
ya no es necesaria en las versiones actuales de JavaSE.

agosto 27, 2014 | Registered Commenterchoces

El driver "mysql-connector-java-5.1.31-bin.jar" está añadido al proyecto como jar externo.
Como te comentaba si ejecuto esta clase en Netbeans, funciona perfectamente, pero no funciona si ejecuto el .class por consola. La versión que tengo de Netbeans es la 8.0
También he probado como dices a quitar la línea "Class.forName("com.mysql.jdbc.Driver"); // Busca el driver" y me da error.
La versión que tengo de java es jdk1.8.0_11
Gracias

agosto 27, 2014 | Unregistered CommenterJorgito_p

Lo que se debe ejecutar por la consola es el .jar de la aplicación, no el .class
Si el driver está añadido, debe aparecer, como te comentaba, en la carpeta dist

http://docs.oracle.com/javase/tutorial/deployment/jar/index.html

Desde la versión JavaSE 1.6 no es necesario "localizar" el driver JDBC mediante Class.forName. El problema no está relacionado con ese método.

agosto 27, 2014 | Registered Commenterchoces