I have a JAVA application with no graphical environment that writes to a database in SQL, this application inside the NETBEANS IDE works perfectly, but outside the IDE, when I try to run the .jar it shows me an error and tells me that it does not you can open the database connection.
The main main code is:
public class AutoPin {
public static void main(String[] args) throws Exception {
while(true){
Model claseModel = new Model();
String myIP = InetAddress.getLocalHost().getHostAddress();
System.out.println("myIP: " + myIP);
claseModel.actualizarFechaUltimoPin(myIP);
Thread.sleep(30*1000);
System.out.println("Estado Actualizado.");
}
}
}
I have an auxiliary class like this:
public class Model{
PreparedStatement s;
protected Connection cn;
String driverDataBase = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String DatoFinales = "jdbc:sqlserver:"
+ "//192.168.1.24\pruebas"
+ ";applicationName="
+ "ProyectoPin"
+ ";databaseName="
+ "Prueba01"
+ ";user="
+ "wil"
+ ";password="
+ "1234";
public Model() {
}
public void actualizarFechaUltimoPin(String ip) throws Exception{
String comandoEjecutarSQL = "update PcTDT set FechaUltimoPin = GETDATE() "
+ "where IpPc = '"
+ ip
+ "'";
//System.out.println("comandoEjecutarSQL: " + comandoEjecutarSQL);
InsertarDatos(comandoEjecutarSQL);
}
private boolean AbrirConexionBaseDatos() {
try {
Class.forName(driverDataBase); //inicializo el driver
cn = DriverManager.getConnection(DatoFinales, new Properties());
return true;
} catch (ClassNotFoundException | SQLException e1) {
System.out.println("no se pudo abrir la conexion con la DB");
return false;
}
}
private void CerrarConexionBaseDatos() throws SQLException {
try {
s.close();
} catch (Exception e1) {
System.out.println("no se pudo cerrar la conexion con la DB");
}
}
public String InsertarDatos(String comandos) throws Exception {
String mensajeRetorno = "0";
if( AbrirConexionBaseDatos() ){
try {
s = cn.prepareStatement(comandos, Statement.RETURN_GENERATED_KEYS);
int i = s.executeUpdate(); //ejecuto los comandos guardados
Integer risultato = -1;
ResultSet rs = s.getGeneratedKeys();
if (rs.next()) {
risultato = rs.getInt(1);
if (risultato == 0) {
risultato = 1;
}
}
if (i > 0) {
//System.out.println("dato insertado o actualizado");
mensajeRetorno = "" + risultato;
} else {
System.out.println("problema en el insertado o actualizado");
}
CerrarConexionBaseDatos();
} catch (SQLException e1) {
System.err.println(e1);
}
}
return mensajeRetorno;
}
}
and finally I use the sqljdbc4.jar sql library, which when I give " Clean and Bulit
" copies this file to a Lib
folder next to .jar
.
When I run this .jar
from the IDE it works perfectly but when I execute it with java -jar AutoPin.jar
it throws me the console error indicating that no se pudo abrir la conexion con la DB
that is a message of clase Model
with which I verify that if it enters this class, but it does not solve the DB opening.
The Error thrown by console is:
Jun 29, 2018 2:34:10 PM com.microsoft.sqlserver.jdbc.TDSChannel enableSSL INFO: java.security path: C: \ Program Files \ Java \ jre1.8.0_171 \ lib \ security Security providers: [SUN version 1.8, SunRsaSign version 1.8, SunEC version 1.8, SunJSSE version 1.8, SunJCE version 1.8, SunJGSS version 1.8, SunSASL version 1 .8, XMLDSig version 1.8, SunPCSC version 1.8, SunMSCAPI version 1.8] SSLContext provider info: Sun JSSE provider (PKCS12, SunX509 / PKIX key / trust facto ries, SSLv3 / TLSv1 / TLSv1.1 / TLSv1.2) SSLContext provider services: [SunJSSE: KeyFactory.RSA - > sun.security.rsa.RSAKeyFactory aliases: [1.2.840.113549.1.1, OID.1.2.840.113549.1.1], SunJSSE: KeyPairGenerator.RSA - > sun.security.rsa.RSAKeyPairGenerator aliases: [1.2.840.113549.1.1, OID.1.2.840.113549.1.1], SunJSSE: Signature.MD2withRSA - > sun.security.rsa.RSASignature $ MD2withRSA aliases: [1.2.840.113549.1.1.2, OID.1.2.840.113549.1.1.2], SunJSSE: Signature.MD5withRSA - > sun.security.rsa.RSASignature $ MD5withRSA aliases: [1.2.840.113549.1.1.4, OID.1.2.840.113549.1.1.4], SunJSSE: Signature.SHA1withRSA - > sun.security.rsa.RSASignature $ SHA1withRSA aliases: [1.2.840.113549.1.1.5, OID.1.2.840.113549.1.1.5, 1.3.14.3.2.29, OID.1 .3.14.3.2.29], SunJSSE: Signature.MD5andSHA1withRSA - > sun.security.ssl.RSASignature, SunJSSE: KeyManagerFactory.SunX509 - > sun.security.ssl.KeyManagerFactoryImpl $ S unX509, SunJSSE: KeyManagerFactory.NewSunX509 - > sun.security.ssl.KeyManagerFactoryImp l $ X509 aliases: [PKIX], SunJSSE: TrustManagerFactory.SunX509 - > sun.security.ssl.TrustManagerFactoryIm pl $ SimpleFactory, SunJSSE: TrustManagerFactory.PKIX - > sun.security.ssl.TrustManagerFactoryImpl $ PKIXFactory aliases: [SunPKIX, X509, X.509], SunJSSE: SSLContext.TLSv1 - > sun.security.ssl.SSLContextImpl $ TLS10Context aliases: [SSLv3], SunJSSE: SSLContext.TLSv1.1 - > sun.security.ssl.SSLContextImpl $ TLS11Context, SunJSSE: SSLContext.TLSv1.2 - > sun.security.ssl.SSLContextImpl $ TLS12Context, SunJSSE: SSLContext.TLS - > sun.security.ssl.SSLContextImpl $ TLSContext aliases: [SSL], SunJSSE: SSLContext.Default - > sun.security.ssl.SSLContextImpl $ DefaultSSLConte xt, SunJSSE: KeyStore.PKCS12 - > sun.security.pkcs12.PKCS12KeyStore] java.ext.dirs: C: \ Program Files \ Java \ jre1.8.0_171 \ lib \ ext; C: \ Windows \ Sun \ Java \ li b \ ext
Could you help me please?
Thanks in advance