java - conectar - "No se encontrĂ³ un controlador adecuado" cuando se ejecuta desde JAR
ucanaccess jar files (2)
Esta pregunta ya tiene una respuesta aquí:
Desarrollé un pequeño juego en el cual el texto ingresado por el usuario debe ser publicado en una base de datos MS Access.
Todo funciona bien en NetBeans, pero cada vez que lo accedo desde el archivo JAR (que en última instancia es lo que necesito entregar a mi cliente), no se publica nada en la base de datos. De hecho, devuelve el siguiente error:
java.sql.SQLException: No suitable driver found for jdbc:ucanaccess://C:/Users/Paul/Desktop/Spelli/RispostiDB.mdb
Este es el código relevante:
public void postAnsDB()
{
String tableName = "Form"+studentGroup +"_"+studentSurname+"_"+studentName+"";
answerModifier();
try{
String strurl="jdbc:ucanaccess://C://Users//Paul//Desktop//Spelli//RispostiDB.mdb";
Connection conn=DriverManager.getConnection(strurl, "", "");
Statement stmt=conn.createStatement();
//Post Student Details to DB
String post = "INSERT INTO "+tableName+"(ID, responses, Correct_Response, Valid_Invalid, Marks) VALUES (''"+ansID+"'', ''"+answer+"'', ''"+correct+"'', ''"+valid+"'', ''"+marks+"'');";
stmt.executeUpdate(post);
}
catch(Exception e)
{
System.out.println("Exception found in postAnsDB: "+e);
}
}
Cuando construyes tu proyecto en NetBeans crea una carpeta dist
en la carpeta de inicio de tu proyecto, coloca el archivo JAR para tu código en esa carpeta y también coloca las dependencias (archivos JAR para los componentes necesarios como UCanAccess, Jackcess, HSQLDB y Bits de Apache Commons) en una subcarpeta llamada lib
. Debe asegurarse de que la carpeta lib
se copie en la máquina de destino y se coloque en la misma carpeta que su archivo JAR principal. Mire aquí para más detalles.
Podrías elegir el método del frasco gordo. Puedes verlo aquí si usas hormiga.
Si tiene un proyecto de maven, podría tener este complemento para crear un contenedor de grasa
El beneficio de una aplicación de contenedor de grasa es que puede tener todo dentro de un contenedor y no necesita preocuparse con el directorio de lib como se mencionó en otra respuesta.
También tenga cuidado con las rutas codificadas como:
String strurl = "jdbc: ucanaccess: // C: // Users // Paul // Desktop // Spelli // RispostiDB.mdb";
que tienes en tu código