Unable to connect to MS SQL Server 2008 using a JAR from command prompt but runs successfully in Eclipse

StackOverflow https://stackoverflow.com/questions/15827011

Domanda

I am trying to connect to SQL Server 2008 using sqljdbc4.jar and could successfully connect using Eclipse.

But when i export my code as a JAR and try to run it using command prompt, i get error :

D:\Eclipse\TestDBJar>java -Djava.ext.dirs=lib -jar TestDB.jar Apr 5, 2013 11:17:17 AM com.microsoft.sqlserver.jdbc.TDSChannel enableSSL INFO: java.security path: C:\Program Files\Java\jre6\lib\security Security providers: [SUN version 1.6, SunRsaSign version 1.5, SunJSSE version 1. 6, SunJGSS version 1.0, SunSASL version 1.5, XMLDSig version 1.0, SunPCSC versio n 1.6] SSLContext provider info: Sun JSSE provider(PKCS12, SunX509 key/trust factories, SSLv3, TLSv1) 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 -> com.sun.net.ssl.internal.ssl.RSASignat ure , SunJSSE: KeyManagerFactory.SunX509 -> com.sun.net.ssl.internal.ssl.KeyManagerF actoryImpl$SunX509 , SunJSSE: KeyManagerFactory.NewSunX509 -> com.sun.net.ssl.internal.ssl.KeyManag erFactoryImpl$X509 , SunJSSE: TrustManagerFactory.SunX509 -> com.sun.net.ssl.internal.ssl.TrustMana gerFactoryImpl$SimpleFactory , SunJSSE: TrustManagerFactory.PKIX -> com.sun.net.ssl.internal.ssl.TrustManager FactoryImpl$PKIXFactory
aliases: [SunPKIX, X509, X.509] , SunJSSE: SSLContext.SSL -> com.sun.net.ssl.internal.ssl.SSLContextImpl , SunJSSE: SSLContext.SSLv3 -> com.sun.net.ssl.internal.ssl.SSLContextImpl , SunJSSE: SSLContext.TLS -> com.sun.net.ssl.internal.ssl.SSLContextImpl , SunJSSE: SSLContext.TLSv1 -> com.sun.net.ssl.internal.ssl.SSLContextImpl , SunJSSE: SSLContext.Default -> com.sun.net.ssl.internal.ssl.DefaultSSLContextI mpl , SunJSSE: KeyStore.PKCS12 -> com.sun.net.ssl.internal.pkcs12.PKCS12KeyStore ] java.ext.dirs: lib com.microsoft.sqlserver.jdbc.SQLServerException: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption . Error: "RSA premaster secret error". ClientConnectionId:c0a357b6-e274-41b2-9fd a-7ef89ebdfb7a at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerC onnection.java:1667) at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1668)

    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLSer

verConnection.java:1323) at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConne ction.java:991) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerCon nection.java:827) at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver. java:1012) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at TestDbConnection.main(TestDbConnection.java:13) Caused by: javax.net.ssl.SSLKeyException: RSA premaster secret error at com.sun.net.ssl.internal.ssl.RSAClientKeyExchange.(Unknown Sour ce) at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverHelloDone(Unknown Source) at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(Unknown Source) at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown Source) at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Unknown Source ) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)

    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Un

known Source) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Sou rce) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Sou rce) at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1618)

    ... 7 more Caused by: java.security.NoSuchAlgorithmException: SunTlsRsaPremasterSecret KeyG enerator not available
    at javax.crypto.KeyGenerator.<init>(DashoA13*..)
    at javax.crypto.KeyGenerator.getInstance(DashoA13*..)
    at com.sun.net.ssl.internal.ssl.JsseJce.getKeyGenerator(Unknown Source)
    ... 17 more

I am providing an external lib folder having sqljdbc4.jar in it and running my JAR using java -Djava.ext.dirs=lib -jar TestDB.jar

I have read through various posts but didn't work.

È stato utile?

Soluzione

Exporting it as a Runnable JAR after selecting the option of Copy required libraries next to generated JAR solved the issue. A normal JAR, somehow, was not able to access the lib folder.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top