intellij eclipse java-ee jdbc classnotfoundexception

intellij - Cómo instalar el controlador JDBC en el proyecto web de Eclipse sin enfrentar java.lang.ClassNotFoundexception



java.lang.classnotfoundexception com.mysql.jdbc.driver netbeans (13)

Hay una pregunta MUY similar a la mía, pero en mi caso no tengo ningún jarrón duplicado en mi ruta de compilación, por lo que la solución no funciona para mí. He buscado en Google por un par de horas, pero ninguna de las soluciones que encontré realmente resolvió mi problema. Estoy creando un sitio web con conectividad de base de datos para una tarea. Estoy usando una base de datos MySQL, desarrollándome en Eclipse y ejecutándome en Windows.

Sigo recibiendo java.lang.ClassNotFoundException: com.mysql.jdbc.Driver con el 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 ejecuto el código anterior obtengo el siguiente resultado:

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

¡No pasa la línea Class.forName... y no puedo entender por qué! Aquí esta lo que hice:

  1. Descargue 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 tarro externo a mi ruta de compilación y seleccioné mysql-connector-java-5.1.12-bin.jar .

Cada vez que intento usar el servlet recibo el mismo error, independientemente de si tengo el tarro o no. ¿Podrías ayudarme a resolver esto?


Lo que no debes hacer (especialmente cuando trabajas en un proyecto compartido)

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

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

Buena solución 1

Crear una carpeta de vendor . pon allí toda tu lib externo. luego, mapea esta carpeta como una dependencia de tu proyecto. en eclipse necesitas

  1. agrega tu carpeta a la build path
    1. Project Properties -> Java build path
    2. Libraries -> agregue lib externo o cualquier otra solución para agregar sus archivos / carpeta
  2. agregue su ruta de compilación al deployment Assembly ( reference )
    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 WAR finalizado.
    4. Seleccione los que desee y presione Finalizar.

Buena solución 2

Utilice maven (o cualquier alternativa) para gestionar la dependencia del proyecto


Coloque mysql-connector-java-5.1.38-bin.jar en la carpeta C: / Archivos de programa / Apache Software Foundation / Tomcat 7.0 / lib.haciendo este programa con execute


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


Como lo está ejecutando en servlet , debe tener el jar accesible por el contenedor de servlets . O incluye el conector como parte de la war aplicaciones o lo coloca como parte de la biblioteca extendida del contenedor de servlets y de la administración de la fuente de datos, si tiene uno. La segunda parte depende totalmente del contenedor que tengas.


En cuanto a cada biblioteca "de terceros" en el sabor de un archivo JAR que va a ser utilizado por la aplicación web, solo copie / suelte el archivo JAR físico en la aplicación /WEB-INF/lib . Luego estará disponible en el classpath predeterminado de webapp. Además, Eclipse es lo suficientemente inteligente como para darse cuenta de eso. No es necesario molestarse con buildpath. Sin embargo, asegúrese de eliminar todas las referencias innecesarias que haya agregado antes, de lo contrario, podría colisionar.

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

Ver también:


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


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

En lugar de un main() vacío main() , 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 el separador de ruta, como se discute here y here .


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

Por lo tanto, asegúrese de que el archivo .jar (conector mysql) esté en la ubicación física de la carpeta lib de WEB-INF. y asegúrese de reiniciar Tomcat utilizando el comando shutdown en cmd. deberia de funcionar.


Si el problema persiste,

Coloque el contenedor mysql-connector-java-5.0.8-bin en un lugar dentro de su carpeta Tomcat-> lib-> (No importa dónde haya instalado su Tomcat). Y cambie su variable de entorno (Hecho haciendo clic en Propiedades de Mi PC -Configuraciones avanzadas del sistema- Variables ambientales-Y establezca un nuevo nombre de variable y valores de variable como el lugar donde reside su archivo lib. No olvide ingresar un; al final de la ruta )

Si el problema persiste, intente descargar commons-collections-2.0.jar ( http://www.docjar.com/jar_detail/commons-collections-2.0.jar.html ) y pegue el jar en el mismo lugar donde reside su jar mysql ( es decir) dentro de Tomcat-lib.

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


Solo sigue estos pasos:

1) Instalar eclipse
2) Importar Apache al eclipse
3) Instalar MySQL
4) Descargar mysqlconnector / J
5) Descomprime el archivo comprimido navega por él hasta que obtengas el archivo bin en él. A continuación, coloque todos los archivos que están presentes en la carpeta que contiene bin a C: / Archivos de programa / mysql / mysql server5.1 / y luego proporcione la misma ruta que la dirección mientras define el controlador en eclipse.

Eso es todo chicos muy fáciles.


por 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 ejecute la aplicación.


suponiendo que su proyecto se basa en maven, agréguelo a su POM:

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

Guarde> Construir> y pruebe la conexión nuevamente. ¡Funciona! Su versión real del conector java de MySQL puede variar.


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.