jar no conecta a mysql

Iniciado por paola_24, 1 Septiembre 2019, 01:38 AM

0 Miembros y 1 Visitante están viendo este tema.

paola_24

Buenas estoy iniciando en programación en java

Resulta que estoy haciendo una aplicación de escritorio en Netbeans; mientras corro la aplicación en netbeans conecta muy bien a la base de datos en este caso Mysql, pero cuando abro la aplicación desde el jar no me conecta a mysql.

No se que hacer

Gracias


EdePC

Saludos,

- Abre una Consola (CMD o PowerShell) y ejecuta desde ahí tu jar, por ejemplo esto muestra un error de driver:

CitarC:\Users\EdSon>java -jar "D:\PRY\ControlSystem\dist\ControlSystem.jar"
com.mysql.jdbc.Driver
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at controlador.CarreraDAO.mostrarTablaCarreras(CarreraDAO.java:153)

paola_24

Hola gracias por responder,

lo ejecute desde la consola abre la aplicación y me dice que no se puede conectar, (error de conexión).

no me da ningun error por driver, solo que no puede establecer conexión.

EdePC

- Supongo que estás utilizando un try/catch para gestionar expeciones/errores y mostrar mensajes de error personalizados. Revisa tu código, esa parte donde debe haber algo como System.println("Error de conexión");

- Si tu proyecto usa librerías asegúrate de que estas librerías acompañen a tu .jar, por ejemplo en mi caso:

Citardist
|   README.TXT
|   SistemaControlPagos.jar
|
\---lib
        AbsoluteLayout.jar
        commons-collections-3.2.1.jar
        commons-digester-2.1.jar
        commons-logging-1.1.1.jar
        iText-2.1.7.jar
        jasperreports-4.7.1.jar
        jcalendar-1.3.3.jar
        mysql-connector-java-5.1.23-bin.jar

- Como se puede ver, NetBeans compila el proyecto en un .jar distribuible en la carpeta dist donde a su vez hay un archivo README.TXT y el compilado en sí SistemaControlPagos.jar.  Aparte se crea una carpeta lib que contiene todas las librerías que usa el proyecto, te crea la carpeta lib?

- Si no te crea la carpeta lib, se tiene que configurar en NetBeans, click derecho en tu proyecto > propiedades > Build > Packaging > Marcar Build JAR y Copiar librerías. Mi NetBeans está en inglés así que puede que no lo esté traduciendo bien XD.

-- Al final darle un Click derecho > Limpiar y Construir (Clean and Build)

- Aparte puedes abrir tu .jar con WinRar o 7-zip para ver que tiene dentro, debe tener una carpeta META-INF y dentro un archivo MANIFEST.MF cuyo contenido debe indicar entre otras cosas donde encontrar las librerías:

CitarManifest-Version: 1.0
Ant-Version: Apache Ant 1.9.7
Created-By: 1.8.0_221-b11 (Oracle Corporation)
Class-Path: lib/AbsoluteLayout.jar
            lib/jasperreports-4.7.1.jar
            lib/jcalendar-1.3.3.jar
            lib/iText-2.1.7.jar
            lib/commons-logging-1.1.1.jar
            lib/commons-collections-3.2.1.jar
            lib/commons-digester-2.1.jar
            lib/mysql-connector-java-5.1.23-bin.jar
X-COMMENT: Main-Class will be added automatically by build
Main-Class: vista.FramePrincipal


paola_24

si crea la carpeta lib alli se encuentran las librerias usadas, también esta el driver de mysql;
y al abrir el archivo MANIFEST  me muestra lo siguiente:

CitarManifest-Version: 1.0
Ant-Version: Apache Ant 1.9.7
Created-By: 1.8.0_211-b12 (Oracle Corporation)
X-COMMENT: Main-Class will be added automatically by build
Specification-Title: Java Advanced Imaging Image I/O Tools
Specification-Version: 1.1.3
Specification-Vendor: Sun Microsystems, Inc.
Implementation-Title: com.sun.media.imageio
Implementation-Version: 1.1.3
Implementation-Vendor: Sun Microsystems, Inc.
Extension-Name: com.sun.media.imageio
Main-Class: Vista.FrmLogin
Class-Path: . ./lib lib

EdePC

- Ahí está el problema, tu MANIFEST.MF no tiene bien puestas las librerías, supongo que es un problema generado por haber importado los recursos de alguna manera, el daño suele ocurrir en el fichero nbproject\project.properties ...

- La solución más limpia sería crea un nuevo proyecto, luego copiar tu carpeta src y carpeta de librerías al nuevo proyecto, luego ir a las propiedades del proyecto (click derecho > popiedades a tu proyecto), en Libraries agregar las librerías que has copiado (Add JAR/Folder), agregar las librerías globales si las hay (Add library). En Run, especificar la Main Class (dándole en Browse y selecionándola) OK. Finalmente dar un Clean and Build.

- Otra solución es extraer tu Manifest.mf y editarlo a mano agregando las librerías en el Class-Path:

CitarManifest-Version: 1.0
Ant-Version: Apache Ant 1.9.7
Created-By: 1.8.0_211-b12 (Oracle Corporation)
X-COMMENT: Main-Class will be added automatically by build
Specification-Title: Java Advanced Imaging Image I/O Tools
Specification-Version: 1.1.3
Specification-Vendor: Sun Microsystems, Inc.
Implementation-Title: com.sun.media.imageio
Implementation-Version: 1.1.3
Implementation-Vendor: Sun Microsystems, Inc.
Extension-Name: com.sun.media.imageio
Main-Class: Vista.FrmLogin
Class-Path: lib/libreria01.jar
            lib/libreria02.jar
            lib/libreria03.jar
            lib/libreriaDelMySQLConnector.jar


-- La última línea de este fichero debe ser una línea en blanco

-- Luego puedes usar el mismo WinRAR o 7-zip para reemplazar el manifest.mf original por este nuevo. O hacerlo por medio del comando JAR:

Citarjar -umf NuevoManifest.mf MiProyecto.jar

paola_24

Si ya conecto, eran las librerias...
Muchas gracias!!!

lWacha

Me funcionó copiar todas las bibliotecas en la misma carpeta que el archivo .jar, normalmente netbeans tiene deshabilitada esa función, pero es bueno agregarla si vas a desplegar tu proyecto