Foro de elhacker.net

Programación => Java => Mensaje iniciado por: paola_24 en 1 Septiembre 2019, 01:38 am



Título: jar no conecta a mysql
Publicado por: paola_24 en 1 Septiembre 2019, 01:38 am
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



Título: Re: jar no conecta a mysql
Publicado por: EdePC en 1 Septiembre 2019, 02:38 am
Saludos,

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

Citar
C:\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)


Título: Re: jar no conecta a mysql
Publicado por: paola_24 en 2 Septiembre 2019, 20:39 pm
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.


Título: Re: jar no conecta a mysql
Publicado por: EdePC en 3 Septiembre 2019, 00:36 am
- 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:

Citar
dist
|   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:

Citar
Manifest-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



Título: Re: jar no conecta a mysql
Publicado por: paola_24 en 3 Septiembre 2019, 02:41 am
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:

Citar
Manifest-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


Título: Re: jar no conecta a mysql
Publicado por: EdePC en 3 Septiembre 2019, 15:10 pm
- 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:

Citar
Manifest-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:

Citar
jar -umf NuevoManifest.mf MiProyecto.jar


Título: Re: jar no conecta a mysql
Publicado por: paola_24 en 4 Septiembre 2019, 01:30 am
Si ya conecto, eran las librerias...
Muchas gracias!!!
 


Título: Re: jar no conecta a mysql
Publicado por: lWacha en 9 Febrero 2020, 20:58 pm
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


Título: Re: jar no conecta a mysql
Publicado por: wandypi13 en 19 Abril 2022, 02:31 am
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

hermano como le hiciste me pasa lo mismo