Cómo instalar el controlador JDBC en Eclipse web project sin tener que hacer frente a Java.lang.ClassNotFoundexception


Hay una pregunta MUY similar a la mía, pero en mi caso no tengo ningún tarro duplicado en mi camino de construcción, por lo que la solución no funciona para mí. He buscado en Google durante un par de horas, pero ninguna de las soluciones que he encontrado allí en realidad resolver mi problema. Estoy creando un sitio web con algo de conectividad de base de datos para una tarea. Estoy usando una base de datos MySQL, desarrollo en Eclipse y que se ejecutan en Windows.

Sigo recibiendo java.lang.ClassNotFoundException: com.mysql.jdbc.Driver con lo siguiente código:

import java.sql.*;
//...
public void someMethodInMyServlet(PrintWriter out)
{
    Connection connection = null;
    PreparedStatement query = null;
    try {

        out.println("Create the driver instance.<br>");
        Class.forName("com.mysql.jdbc.Driver").newInstance();

        out.println("Get the connection.<br>");
        connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "secret");
        query = connection.prepareStatement( "SELECT * FROM customers");

        //...
    } catch (Exception e)
    {
        out.println(e.toString()+"<br>");
    }
}
//...

Cuando corro el código anterior obtengo la siguiente salida:

Create the driver instance.
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

No pasa de la línea Class.forName... y no puedo entender por qué! Esto es lo que hice:

  1. Descargar mysql-connector.
  2. Ponlo en mi carpeta MySQL C:\Program Files\MySQL\mysql-connector-java-5.1.12\mysql-connector-java-5.1.12-bin.jar.
  3. Abrió las propiedades del proyecto en Eclipse.
  4. Agregue Jar externo a mi Ruta de compilación y seleccioné mysql-connector-java-5.1.12-bin.jar.

Cada vez que intento usar el servlet obtengo el mismo error sin importar si tengo el frasco de ahí o si no lo hago. ¿Podrías ayudarme a resolver esto?

Author: Community, 2010-03-01

13 answers

Como para cada biblioteca "3rd-party" en el sabor de un archivo JAR que va a ser utilizado por la webapp, simplemente copie/suelte el archivo JAR físico en /WEB-INF/lib de la webapp. A continuación, estará disponible en classpath predeterminado de webapp. Además, Eclipse es lo suficientemente inteligente como para darse cuenta de eso. No hay necesidad de problemas con buildpath. Sin embargo, asegúrese de eliminar todas las referencias innecesarias que agregó antes, de lo contrario podría chocar.

Una alternativa es instalarlo en el propio servidor soltando el archivo JAR físico en el servidor propia carpeta /lib. Esto es necesario cuando se utiliza el origen de datos del grupo de conexiones JDBC proporcionado por el servidor, que a su vez necesita el controlador JDBC de MySQL.

Véase también:

 52
Author: BalusC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:47:36

Dado que lo está ejecutando en servlet, necesita tener el jar accesible por el contenedor de servlet . Puede incluir el conector como parte de su aplicación war o ponerlo como parte de la biblioteca extendida del contenedor servlet y las cosas de administración de fuentes de datos, si tiene una. La segunda parte es totalmente depende del contenedor que tiene.

 4
Author: DJ.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-28 23:41:53

Los demás tienen razón al hacer que el JAR del controlador esté disponible para su contenedor servlet. Mi comentario tenía la intención de sugerir que verifique desde la línea de comandos si el controlador en sí está intacto.

En lugar de un main() vacío, intente algo como esto, adaptado de la documentación incluida:

public class LoadDriver {
    public static void main(String[] args) throws Exception {
        Class.forName("com.mysql.jdbc.Driver");
    }
}

En mi plataforma, haría esto:

$ ls mysql-connector-java-5.1.12-bin.jar 
mysql-connector-java-5.1.12-bin.jar
$ javac LoadDriver.java 
$ java -cp mysql-connector-java-5.1.12-bin.jar:. LoadDriver

En su plataforma, debe usar ; como separador de ruta, como se discutió aquí y aquí.

 3
Author: trashgod,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-02 15:56:26

Coloque mysql-connector-java-5.1.6-bin.jar a la carpeta \ Apache Tomcat 6.0.18 \ lib. Su problema será resuelto.

 3
Author: Satya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-12-29 12:16:39

Simplemente siga estos pasos:

1) Instalar eclipse
2) Importar Apache a eclipse
3) Instalar mysql
4) Descargar mysqlconnector / J
5) Descomprima el archivo comprimido navegue a través de él hasta que obtenga el archivo bin en él. A continuación, coloque todos los archivos que están presentes en la carpeta que contiene bin a C:\Program Files \ mysql \ mysql server5.1/ luego proporcione la misma ruta que la dirección mientras define el controlador en eclipse.

Eso es muy fácil chicos.

 1
Author: Rajat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-11 04:01:05

Lo que no debe hacer hacer (especialmente cuando se trabaja en un proyecto compartido)

Ok, después de tener el mismo tema y después de leer algunas respuestas aquí y otros lugares. parece que poner external lib en WEB-INF/lib no es tan buena idea como pollute webapp/JRE libs with server-specific libraries - para más información consulte esta respuesta "

Otra solución que NO recomiendo es: para copiarlo en la carpeta tomcat/lib. aunque esto puede funcionar, será difícil administrar la dependencia de un servidor compartido (git para ejemplo) proyecto.

Buena solución 1

Crea la carpeta vendor. pon ahí toda tu liberación externa. luego, asigna esta carpeta como dependencia a tu proyecto. en eclipse necesitas

  1. agregue su carpeta a la build path
    1. Project Properties -> Java build path
    2. Libraries - > añadir lib externa o cualquier otra solución para añadir sus archivos/carpeta
  2. añade tu ruta de compilación a deployment Assembly (referencia )
    1. Project Properties -> Deployment Assembly
    2. Add -> Java Build Path Entries
    3. Ahora debería ver la lista de bibliotecas en su ruta de compilación que puede especificar para su inclusión en su GUERRA terminada.
    4. Seleccione los que desee y pulse Finalizar.

Buena solución 2

Use maven (o cualquier alternativa) para administrar la dependencia del proyecto

 1
Author: oak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:47:36

Si el problema persiste,

Poner el- mysql-connector-java-5.0.8-bin jar en un lugar dentro de su carpeta Tomcat->lib - >(Sin importar dónde haya instalado su Tomcat). Y cambie su variable ambiental (Haga clic en Propiedades de Mycomputer-Configuración avanzada del sistema-Variables ambientales - Y establezca un nuevo nombre de variable y valores de variable como el lugar donde reside su archivo lib.No se olvide de entrar en a; al final del camino)

Si el problema persiste Tratar descargar commons-collections-2.0.tarro ( http://www.docjar.com/jar_detail/commons-collections-2.0.jar.html ) y pega el jar en el mismo lugar donde reside tu jar mysql (ie) dentro de Tomcat-lib.

Limpie su proyecto-Detenga su servidor - Finalmente intente ejecutar.

 0
Author: Praveen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-21 12:07:06

Muchas veces he estado enfrentando este problema, he experimentado ClassNotFoundException. si jar no está en la ubicación física.

Así que asegúrate .archivo jar (conector mysql) en la ubicación física de la carpeta WEB-INF lib. y asegúrese de reiniciar Tomcat mediante el comando shutdown en cmd. debería funcionar.

 0
Author: agiles,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-30 03:49:27

La única solución que funcionó para mí es poner el .archivo jar bajo WEB-INF / lib . Espero que esto ayude.

 0
Author: karthik339,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-13 12:47:41

Asumiendo que su proyecto está basado en maven, agréguelo a su POM:

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.26</version>
    </dependency>

Save > Build > and test connection again. Funciona! Su versión real de mysql java connector puede variar.

 0
Author: Kingz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-04 19:33:46

Ponga mysql-connector-java-5.1.38-bin.tarro a la C:\Program Archivos\Apache Software Foundation \ Tomcat 7.0\lib folder.by haciendo este programa con execute

 0
Author: Rutvik patel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-15 07:32:14
Right click on the Project, go to Properties. 
Choose Deployment Assembly (if not found, read the update part) from the left pane. 
Check if Java Build Path Entries are provided. 
If not, click on Add and include it. If it is already present, click Add to include your connector jar as Archive. 
Do a Project>Clean, restart your Server.
 0
Author: Pankaj Mandale,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-01 12:35:26

Para este error:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

Necesitas:

Import java.sql.*;
Import com.mysql.jdbc.Driver;

Incluso si no se usa hasta que se ejecuta la aplicación.

 -2
Author: Ant3G,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-21 12:20:24